Я пытаюсь использовать веб-службу на основе SOAP из проприетарного приложения на основе JBoss из С# (через ссылку на службу), но сервер продолжает возвращать SystemException.
Я использовал fiddler для захвата вызовов веб-сервиса из внешнего интерфейса поставщика и из C# и сравнивал/настраивал их в soapUI, пока не отследил разницу до проблемы с интервалом между именами.
По сути, чтобы взять неработающее сообщение и заставить его работать, я изменяю <addPackageItems xmlns="...">
на <tns:addPackageItems xmlns:tns="...">
и </addPackageItems>
на </tns:addPackageItems>
.
Мой вопрос в основном заключается в том, как я могу сделать эту работу, внеся изменения в клиент (мой код С#)? Я ненавижу быть таким общим, но, честно говоря, я не знаю, почему пространство имен требуется, чтобы избежать ошибки на сервере, поэтому я не хотел спрашивать, как изменить мой код С#, чтобы создать пространство имен для 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>