Я импортировал WSDL и использовал его для отправки запроса SOAP. Это выглядит следующим образом:Удаление пространства имен из запроса SOAP
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<Calculate xmlns="urn:xx.WSDL.xxxxxWebService">
<ContractdocumentIn>
<AL>
...More XML...
Проблема заключается в xmlns="urn:xx.WSDL.xxxxxWebService"
часть в элементе Calculate. Веб-служба не может этого принять. Веб-сервис не любит пространства имен, как это ...
Использования SoapUI Я нашел этот запрос работать нормально:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:col="http://example.com.service.xxx/">
<SOAP-ENV:Body>
<col:Calculate>
<ContractdocumentIn>
<AL>
...More XML...
Итак, как изменить запрос от первого ко второй версии? (Без использования грязных трюков!)
(Re-импортирование не является проблемой, если это приведет в надлежащий формат запроса.)
снова: нет подвохов не допускается, как взлом потока запроса, чтобы изменить его !
И пока я полностью не проверил это, кажется, что C#/VS2010 и Delphi 2010 также не могут использовать веб-сервис, который я пытаюсь вызвать. Веб-сервис, который, кажется, написан на Java. SoapUI записывается на Java, поэтому у нас есть клиент Java, который разговаривает с сервисом Java, который, похоже, работает нормально. Но любой другой клиент?
В любом случае, время добавить еще два тега: «Java», так как это Java-сервис и «vs2010», потому что .NET также не любит эту услугу.
И я собирался написать обертку вокруг этой службы в .NET, надеясь, что это сработает ... Это не так. Так что это очень серьезный недостаток, возможно, недостаток Java ...
Успехов. Мне приходилось прибегать к грязным трюкам. –
Да, я знаю. Возможно, я смогу решить это, используя грязные трюки, но руководство не соглашается с этим. Поэтому код должен быть чистым. –
Код SOAP позволяет вам проверять отправляемый XML и изменять его, если вам нужно. Он явно поддерживает ручную манипуляцию. И код будет там - ничего «грязного» о манипуляции после сборки. Может быть, не так хорошо, как автоматический, но никто не должен беспокоиться об этом. – mj2008