我创建了一个简单的Web服务来接收数据,但是我错过了一个元素,来自客户端的SOAP样本,我似乎无法模仿。
下面是带有示例SOAP布局的Web服务:
[WebMethod]
public void ReceiveStatusUpdate(string Reference, string ThirdPartyReference, string Status)
{
}
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ReceiveStatusUpdate xmlns="http://tempuri.org/">
<Reference>string</Reference>
<ThirdPartyReference>string</ThirdPartyReference>
<Status>string</Status>
</ReceiveStatusUpdate>
</soap:Body>
</soap:Envelope>
下面是他们的SOAP示例,它有一个名为StatusUpdate
的元素:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ReceiveStatusUpdate xmlns="http://tempuri.org/">
<StatusUpdate>
<Reference>zzzz</Reference>
<ThirdPartyReference>yyyy</ThirdPartyReference>
<Status>xxxx</Status>
</StatusUpdate>
</ReceiveCL4UStatusUpdate>
</soap:Body>
</soap:Envelope>
有人可以解释我需要添加的内容: - )
答案 0 :(得分:0)
似乎缺少上面“您的”示例中的xmlns:soap命名空间。它应始终具有以下值:“http://www.w3.org/2001/12/soap-envelope”。
命名空间将Envelope定义为SOAP Envelope,如果使用不同的命名空间,消费者应用程序会生成错误并丢弃该消息。
答案 1 :(得分:0)
要解决缺少的元素,我需要在服务中声明一个对象,然后将每个字符串作为对象中的变量,请参阅下面的代码:
namespace WebApplication1
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class Update : WebService
{
[WebMethod]
public void ReceiveStatusUpdate(Object StatusUpdate)
{
var reference = StatusUpdate.Reference;
var thirdPartyReference = StatusUpdate.ThirdPartyReference;
var status = StatusUpdate.Status;
}
public class Object
{
public string Reference;
public string ThirdPartyReference;
public string Status;
}
}
}
我希望这对其他人有用: - )