Клиент .NET получает «не правильно сформированный» XML-ответ от веб-службы Axis - PullRequest
1 голос
/ 09 июня 2009

У меня есть простое приложение .NET, которое делает SOAP-вызов стороннему веб-сервису Axis. Когда я отслеживаю трафик HTTP, я вижу, что запрос выглядит нормально, однако я получаю исключение: «Ответ - это не правильно сформированный XML». Возвращаемый объект является нулевым, так как кажется, что XML не может быть десериализован.

Один вопрос, касающийся различных объявлений пространства имен внутри wsdl. Некоторые из этих объявлений указывают на URL / домены, которые больше не существуют. Может ли это вызвать какие-либо проблемы?

Из документа WSDL:

<wsdl:definitions targetNamespace="http://domaindoesntexist.com/"  
xmlns:apachesoap="http://xml.apache.org/xml-soap"  
xmlns:impl="http://domaindoesntexist.com/"  
xmlns:intf="http://domaindoesntexist.com/"  
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"  
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"  
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Пример ответа HTTP с удаленными инкриминирующими данными:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Transfer-Encoding: chunked
Date: Fri, 05 Jun 2009 13:54:59 GMT

7cb
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<someMethod xmlns="http://test.com/services/myservice/">
</someMethod>
</soapenv:Body>
</soapenv:Envelope>
0

Ответы [ 3 ]

1 голос
/ 25 мая 2010

По моему опыту, URL-адреса пространства имен не обязательно должны быть фактическими существующими URI. Согласованность - это то, что нужно, поэтому можно создавать внутренние схемы XML для проверки. Намерение состояло (я полагаю) в том, чтобы разместить определение пространства имен в этом месте, чтобы разработчики могли пойти туда и проверить его, но тогда люди стали ленивыми.

На самом деле, я могу быть совершенно неправ в этом последнем случае.

0 голосов
/ 09 июня 2011

У меня была похожая проблема, и после просмотра трассировки Wireshark было обнаружено, что существует прокси-сервер, который вставляет некоторые заголовки в полезную нагрузку XML

webservice пытается загрузить xml

"Content-Type: text / xml; charset = utf-8 Варьируется: Accept-Encoding, User-Agent Подключение: закрыть Передача-кодировка: чанки 2rZ3fnB2rMzDjipXgQz8ObOcEczeOIO74sa17YK5hrPkt62qce12BItOmuvPrC / WD8N3xZzBeBceBbiAA0IlsR2aXxd479Es7wO9va2cGpF / cc284gI.K5FXbOR5PUPx00EqNRjCdbdU4fv / JXN2alGDzGVlgCnRK5 / 6DJlAkcED2011-06-08T15: 35: 21.505Z "

который явно не загрузится.

Полный поток TCP в моем случае

POST / ls / ws / auth HTTP / 1.1

User-Agent: Mozilla / 4.0 (совместимо; MSIE 6.0; протокол клиента веб-служб MS 2.0.50727.3615)

Content-Type: text / xml; кодировка = UTF-8

SOAPAction: ""

Ведущий: ??????

Длина содержимого: 487

Ожидайте: 100 - продолжить

Подключение: Keep-Alive

2PUldqLs2KqUkJryFiZPQJI.D6RCixeMu443SLd7dCF2qrzws0E2JYatTqm8wD2CuFrSVHEjvJHIXfiLy6w9yBagentfp093.0.1.9019HT31 1.0 / 200 * 10 / 1.0

Дата: среда, 08 июня 2011 15:35:21 GMT

Сервер: Apache-Coyote / 1.1

Content-Type: text / xml; charset = utf-8

Варьируется: Accept-Encoding, User-Agent

X-Cache: MISS от dgtproxy1.skybroadband.com.ph

Соединение: закрыть

0,1

Content-Type: text / xml; charset = utf-8

Варьируется: Accept-Encoding, User-Agent

Подключение: закрыть

Передача-кодировка: чанкованная

2rZ3fnB2rMzDjipXgQz8ObOcEczeOIO74sa17YK5hrPkt62qce12BItOmuvPrC / WD8N3xZzBeBceBbiAA0IlsR2aXxd479Es7wO9va2cGpF / cc284gI.K5FXbOR5PUPx00EqNRjCdbdU4fv / JXN2alGDzGVlgCnRK5 / 6DJlAkcED2011-06-08T15: 35: 21.505Z

0 голосов
/ 10 июня 2009

Некоторые из этих деклараций указывают на URL / домены, которые больше не существуют. Может ли это вызвать какие-либо проблемы?

Конечно. Вы пытались обновить веб-сервис в своем проекте?

...