【发布时间】:2012-02-13 23:51:28
【问题描述】:
我是 .NET Web 服务的新手,对这个问题非常困惑。 TCP Viewer 显示我的测试应用程序与我的 Web 服务对话形成了它的 XML,如下所示:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<GetSupply xmlns="http://webservices.florecom.org/commercial/customer/">
<Request>
<SupplyRequest>
<Header xmlns="urn:fec:florecom:xml:data:draft:SupplyStandardMessage:5">
<UserName>xxx</UserName>
<Password>xxx</Password>
<MessageDateTime>2012-01-17T14:59:44.0438037+02:00</MessageDateTime>
<MessageSerial>0</MessageSerial>
</Header>
<Body xmlns="urn:fec:florecom:xml:data:draft:SupplyStandardMessage:5">
<SupplyRequestDetails>
<SupplyRequestLine xmlns="urn:fec:florecom:xml:data:draft:ReusableAggregateBusinessInformationEntity:3"/>
</SupplyRequestDetails>
</Body>
</SupplyRequest>
</Request>
</GetSupply>
</s:Body>
</s:Envelope>
但我的 Web 服务正在从另一家公司接收 XML,如下所示:
<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>
<fsm:SupplyRequest xmlns:qdt="urn:un:unece:uncefact:data:draft:QualifiedDataType:5" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:4" xmlns:ram="urn:un:unece:uncefact:data:draft:ReusableAggregateBusinessInformationEntity:3" xmlns:fsm="urn:fec:florecom:xml:data:draft:SupplyStandardMessage:5">
<fsm:Header>
<fsm:UserName>xxx</fsm:UserName>
<fsm:Password>xxx</fsm:Password>
<fsm:MessageID>634617184436505019</fsm:MessageID>
<fsm:MessageDateTime>2012-01-09T15:07:23.6505019+01:00</fsm:MessageDateTime>
<fsm:MessageSerial>0</fsm:MessageSerial>
</fsm:Header>
<fsm:Body>
<fsm:SupplyRequestDetails>
<SupplyRequestLine xmlns="urn:fec:florecom:xml:data:draft:ReusableAggregateBusinessInformationEntity:3"/>
</fsm:SupplyRequestDetails>
</fsm:Body>
</fsm:SupplyRequest>
</soap:Body>
</soap:Envelope>
谁能帮忙解释一下原因?这些是不同版本的 SOAP 吗?谢谢
更新
有趣的是,在这种情况下(使用第二条 XML 消息)发生的问题是,当服务方法被命中时(使用断点检查这一点并使用 Fiddler 欺骗消息).NET 无法绑定方法的参数(称为'Request'),使其值保持为NULL
【问题讨论】:
-
它们在我看来是一样的,如果它们不一样,你会得到错误
-
@Jontatas:不幸的是,我遇到了错误(请参阅上面的更新)并且消息(在我的 n00b 眼中)完全不同?
-
我想说您在我们的集成平台中使用来自 Web 服务的数据时偶然发现了同样的事情。有趣的是,如果我返回一个对象,它可以工作,但对于数组数据,这是不行的。见stackoverflow.com/questions/8485744
-
这是在服务器之间传递字符串的最复杂的方式。您可以考虑改用 REST,并消除所有命名空间、标题、正文和信封垃圾以及您遇到的问题。
标签: .net xml web-services soap