C# 在C中如何将SOAP主体作为一个参数来读取#
这是对我正在处理的web服务的示例请求:C# 在C中如何将SOAP主体作为一个参数来读取#,c#,xml,web-services,soap,C#,Xml,Web Services,Soap,这是对我正在处理的web服务的示例请求: <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns0:postRequest xmlns:ns0="http://www.mynamespace.com"> <Firstname>Mike</Firstname> <
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns0:postRequest xmlns:ns0="http://www.mynamespace.com">
<Firstname>Mike</Firstname>
<Lastname>Adam</Lastname>
</ns0:postRequest>
</S:Body>
</S:Envelope>
但在实际情况中,有更多的参数。
我的问题是如何将它们作为webmethod中的一个参数读取,注意我不能更改请求XML格式
(顺便说一句,我创建了一个以Firstname和Lastname作为属性的类,并在webmethod中使用该类作为参数,但它始终为null)
非常感谢我想这就是你想要的。它向您展示了如何制作XML模型绑定器 编辑:
我刚刚发现了一个更为尖锐的东西,它谈到了一个Microsoft.AspNet.Mvc.Formatters.Xml nuget包。这可能是你最好的选择。请求正文看起来很奇怪。您确定它是这样对requestid标记进行编号的吗?如果不是因为这个原因,默认的模型绑定器可以为您将其解析为dto poco,但实际上您可能需要一个自定义的模型绑定器。为了更清楚,我将它们更改为Firstname,Lastname@Danielvanheerdent。问题不在于编号本身。如果所有标签都有相同的名称。例如
value1value2…
等等,那么您可以创建一个简单的对象,该对象带有一个名为ValueItem的字符串数组,并将其用作postRequest方法的参数,模型绑定器会为您绑定它。您现在可以创建一个包含Firstname和Lastname以及所有其他属性的对象,模型绑定器会将找到的所有对象绑定到对象的新实例,并将其传递给postRequest方法,但这是否为您解决了问题?是的,这将为我解决问题。事实上,这就是我想要的。事实上,我创建了一个以firstname和lastname作为属性的类,并在webmethod中使用它作为参数,但它始终为null……我不确定问题是什么,以及解决这个问题的正确代码是什么(如果您有任何想法,我们可以在我的问题中的示例代码上执行)@DanielvanHeerden
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
namespace myCode
{
[WebService(Namespace = "http://www.mynamespace.com")]
public class testInt : System.Web.Services.WebService
{
[SoapRpcMethod("http://www.mynamespace.com")]
[WebMethod]
public string postRequest(string Firstname, string Lastname)
{
return Lastname.ToString();
}
}
}