КАК переопределить заголовки запросов Axis2 для веб-службы .NET?
-
22-07-2019 - |
Вопрос
Мне нужно использовать сторонний веб-сервис, реализованный в .NET 2.0 (конечно, в IIS).
Я должен сделать Java-клиент. Я использую wsdl2java для создания заглушки SOAP.
Поскольку исходный проект Apache Axis теперь выглядит не поддерживаемым, и у меня возникли некоторые проблемы при анализе некоторых ответов службы, я преобразовал клиент для использования последней (1.5) версии Axis2. Теперь служба .NET даже не распознает мои запросы.
Мне удалось получить "кусок" выключен (где «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 "quot; ... " мета-тег XML " что Axis2 добавлено в начало запроса?
WS-Deathstar, действительно.
Решение
Поскольку вы упоминаете другой заголовок типа контента, я полагаю, ваш клиент пытается отправить запросы SOAP 1.2, а стороннее приложение понимает только SOAP 1.1
Попробуйте изменить версию используемого мыла, поскольку AFAIK AXIS2 по умолчанию использует SOAP 1.2
stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);