Как переопределить заголовки запросов Axis2 для веб-службы .NET? - PullRequest
2 голосов
/ 25 июня 2009

Мне нужно использовать сторонний веб-сервис, реализованный в .NET 2.0 (конечно, в IIS).

Я должен сделать Java-клиент. Я использую wsdl2java для создания заглушки SOAP.

Поскольку исходный проект Apache Axis теперь выглядит не поддерживаемым, и у меня возникли некоторые проблемы при анализе некоторых ответов службы, я преобразовал клиент для использования последней (1.5) версии Axis2. Теперь служба .NET даже не распознает мои запросы.

Мне удалось отключить "chunking" (где "stub" - это переменная типа MumbleStub, сгенерированная wsdl2java, и я показываю, каковы несколько строк кода в виде одной ужасающей строки):

stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Boolean.FALSE);

.. так что по крайней мере служба распознает мой запрос AS запрос, хотя и плохой: "HTTP/1.1 400 Bad Request" - это ответ сейчас (в отличие от страницы "intro / summary", предлагающей мне ссылка на WSDL).

Я заметил, что запрос Axis ("1") имеет другой заголовок Content-TYpe (text / xml, vs application / soap-xml), и мне интересно, как изменить этот заголовок запроса, если это действительно так проблема.

Альтернативно, у кого-нибудь еще была эта проблема? Действительно ли проблема (здесь не отображается, так как она выглядит как «вставка элемента» в движок блога) ... xml version- "1.0" ... "XML meta intro tag", который Axis2 добавил в начало запроса?

WS-Deathstar, действительно.

1 Ответ

2 голосов
/ 25 июня 2009

Поскольку вы упоминаете другой заголовок типа контента, я предполагаю, что ваш клиент пытается отправить запросы SOAP 1.2, а стороннее приложение понимает только SOAP 1.1

Попробуйте изменить версию используемого мыла, поскольку AFAIK AXIS2 по умолчанию использует SOAP 1.2

stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
...