我试图从 C#(通过服务引用)的基于 JBoss 的专有应用程序中使用基于 SOAP 的 Web 服务,但服务器不断返回 SystemException。
我使用提琴手从供应商的闪存前端和 C# 捕获 Web 服务调用,并在soapUI 中比较/调整它们,直到我将差异追踪到名称间距问题。
基本上是为了接收一条无效的消息并使其工作,我修改<addPackageItems xmlns="...">
为<tns:addPackageItems xmlns:tns="...">
</addPackageItems>
</tns:addPackageItems>
我的问题基本上是如何通过在客户端(我的 C# 代码)中进行修改来完成这项工作?我讨厌这么通用,但老实说,我不知道为什么需要命名空间来避免服务器上的错误,所以我不想问如何修改我的 C# 代码来为 xmlns 生成命名空间关于addPackageItems
是否有其他更好的解决方案。
杂项。信息
C#代码是使用Visual Studio 2012下添加服务引用生成的代码。我可以提供调用代码;如果没有可用的 WSDL,我不相信它真的有用,而且我不确定我是否可以根据我们的协议提供它们(我从未见过)。
非工作 SOAP 消息
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<s:Body>
<addPackageItems xmlns="http://www.docfinity.com/webservices/BpmClientWebServices/">
<processInstanceId>87499</processInstanceId>
<packageItemDto>
<packageItemName>document</packageItemName>
<properties>
<name>documentId</name>
<stringValue>0c7eb1cb3a94986f013ae5c4d8777fde</stringValue>
</properties>
<type>DocFinityDocument</type>
</packageItemDto>
</addPackageItems>
</s:Body>
</s:Envelope>
工作肥皂消息
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<s:Body>
<tns:addPackageItems xmlns:tns="http://www.docfinity.com/webservices/BpmClientWebServices/">
<processInstanceId>87499</processInstanceId>
<packageItemDto>
<packageItemName>document</packageItemName>
<properties>
<name>documentId</name>
<stringValue>0c7eb1cb3a94986f013ae5c4d8777fde</stringValue>
</properties>
<type>DocFinityDocument</type>
</packageItemDto>
</tns:addPackageItems>
</s:Body>
</s:Envelope>