У меня проблема с Delphi 2007 при попытке использовать веб-сервис, настроенный на Java с использованием JAX-WS. Веб-сервис может нормально использоваться из другой Java-программы и с веб-сайта C # / ASP.NET 2.0. Однако, когда я пытаюсь получить доступ к той же службе с помощью средства импорта WSDL в Delphi 2007 (исправление 17-DEC-2007), веб-служба JAX-WS не распознает ни один из параметров, которые я передаю, и обнуляет их.
Я проверил сообщение SOAP, которое передается Delphi, и сравнил его с остальными, и они в значительной степени идентичны (за исключением некоторых незначительных значений пространства имен и большого количества состояний просмотра из .NET!)
Я также был в сети (самой полезной ссылкой была http://www.bobswart.nl/Weblog/Blog.aspx?RootId=5:798) доктора Боба, но не радость.
Кто-нибудь сталкивался с этим раньше?
ТИА.
Сага продолжается!
После ссоры с объектом HTTPRIO, чтобы попытаться заставить его работать, я в конце концов сдался и попробовал прямую передачу XML по HTTP. Сбой.
ОК, поэтому я создал простой тестер в C # и попробовал это. Работает без проблем.
Используя Fiddler, чтобы увидеть, что было отправлено назад и вперед, казалось, что единственная разница была в пространствах имен. Я изменил пространства имен в отправке XML в Delphi и ... это работает!
Это был образец исходного XML, генерируемого WSDLImporter:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<version xmlns="http://path.to.service.com/">
<input>test</input>
</version>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
и вот что на самом деле работает:
<?xml version="1.0"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:version xmlns:ns2="http://path.to.service.com/">
<input>test</input>
</ns2:version>
</S:Body>
</S:Envelope>
Итак, теперь, когда я это знаю, я должен изменить значения пространства имен для кода WSDLImporter? Я не вижу ничего очевидного в свойствах HTTPRIO.
ТИА