Я импортировал WSDL и использовал его для отправки запроса 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...
Итак, как мне изменить запрос от первой ко второй версии? (Без использования грязных трюков!)
(Повторное импортирование не является проблемой, если это приведет к правильному формату запроса.)
Снова: никаких грязных трюков не было, например, взломать поток запросов, чтобы изменить его!
И пока я не полностью протестировал его, кажется, что С#/VS2010 и Delphi 2010 также не могут использовать веб-службу, которую я пытаюсь вызвать. Веб-сервис, который, кажется, написан на Java. SoapUI, написанный на Java, поэтому у нас есть клиент Java, который разговаривает с Java-службой, которая, кажется, работает нормально. Но любой другой клиент?
В любом случае, время добавить еще два тега: "Java", так как это Java-сервис и "vs2010", потому что .NET также не любит эту службу.
И я собирался написать обертку вокруг этой службы в .NET, надеясь, что это сработает... Это не так. Так что это очень серьезный недостаток, возможно, недостаток Java...