Я использовал Eclipse Indigo в Windows7 для создания Java-заглушек Axis2 (Axis 1.6.1, соответствие JDK 1.5) и успешно вызвал общедоступный веб-сервис на http://www.xmlme.com/WSShakespeare.asmx?WSDL Получил идеальный ответ на метод getSpeech указанного сервиса.Затем я использовал tcpmon (плагин), чтобы увидеть обмен xml.Добавлен порт прослушивания = 4556, имя целевого хоста = www.xmlme.com и целевой порт = 80 При этом сгенерированная ошибка HTTP 302 перемещена.Повторение работает правильно, когда вызывается с
ShakespeareSoapProxy ssp = new ShakespeareSoapProxy("http://www.xmlme.com:80/WSShakespeare.asmx?WSDL");
, но не удается, когда слушатель tcpmon добавлен и вызван с
ShakespeareSoapProxy ssp = new ShakespeareSoapProxy("http://localhost:4556/WSShakespeare.asmx?WSDL");
tcpmon soap. Запрос
POST /WSShakespeare.asmx?WSDL HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: www.xmlme.com:4556
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://xmlme.com/WebServices/GetSpeech"
Content-Length: 359
<?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><GetSpeech xmlns="http://xmlme.com/WebServices"><Request>To be, or not to be</Request></GetSpeech></soapenv:Body></soapenv:Envelope>
---------tcpmon response below----------------------------
HTTP/1.0 302 Moved
Location: http://172.16.1.6:15871/cgi-bin/blockpage.cgi?ws-session=1096295497
Pragma: no-cache
Cache-Control: no-cache
Почему происходит сбой tcpmonкак указано выше, мой основной вопрос.ПОЧЕМУ я tcpmon, когда клиент SOAP работал отлично?Потому что я сгенерировал из этого банку, и она отлично работала на Windows7.Но когда я запустил тот же jar на своем сервере iSeries aka AS400, он выдал мне сообщение об ошибке Axis HTTP 401 неавторизованным и требовалась аутентификация.Наши ИТ-специалисты запускают websense, чтобы блокировать вещи, но это localhost на клиенте Windows, где я раньше запускал веб-сервисы .NET.Идеи, ответы очень оценены, спасибо.
Редактировать. Некоторые исследования указывают на учетные данные NTLM по умолчанию, которые отправляет Windows, а сервер - нет?Кто-нибудь хочет прокомментировать, может ли это быть?