Всем привет.
Нужна помощь.
Есть задача: достучаться до внешнего веб сервиса http://hh.ru/services/DictionaryService?wsdl. До этого веб сервисами не занимался, поэтому погуглив, решил попробовать через Axis 1.4. C помощью команды
| Код | java org.apache.axis.wsdl.WSDL2Java http://hh.ru/services/DictionaryService?wsdl
|
Создал необходимые классы, написал клиентик, всё отлично заработало. НО, это всё работало. пока я не отключил "Microsoft Firewall Client for ISA Server". После отключения получал только Connection timeout. Т.е насколько я понимаю, я имею доступ в инет только через прокси.
Поискал в инете нашёл пример с Apache HTTP Client. Попытался просто законектиться с влючённым ISA Client
| Код | HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod("http://hh.ru/services/DictionaryService?wsdl"); try { httpclient.executeMethod(httpget); System.out.println(httpget.getStatusLine()); } finally { httpget.releaseConnection(); }
|
всё отлично результат в консоли
Выключил ISA Client результат
| Код | - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect - Retrying request - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect - Retrying request - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect - Retrying request java.net.ConnectException: Connection timed out: connect
|
Поиcкал ещё про прокси нашёл пример
| Код | HttpClient httpclient = new HttpClient(); GetMethod httpget = new GetMethod("http://hh.ru/services/DictionaryService?wsdl"); httpclient.getHostConfiguration().setProxy("ms-proxy", 8080; try { httpclient.executeMethod(httpget); System.out.println(httpget.getStatusLine()); } finally { httpget.releaseConnection(); }
|
И при включённом и выключенном ISA Client результат
| Код | - ntlm authentication scheme selected - No credentials available for NTLM <any realm>@ms-proxy:8080 HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. )
|
Имя хота прокси взят из ISA Client, порт 8080. При выключеном ISA Cliet, если данный прокси и порт прописать в IE, то он работает.
Попробовал и такой вариант
| Код | HttpClient httpclient = new HttpClient(); httpclient.getHostConfiguration().setProxy("ms-proxy", 8080); httpclient.getState().setProxyCredentials(new AuthScope("ms-proxy", 8080), new NTCredentials("username", "pass", "", "")); GetMethod httpget = new GetMethod("http://hh.ru/services/DictionaryService?wsdl"); try { httpclient.executeMethod(httpget); System.out.println(httpget.getStatusLine()); } finally { httpget.releaseConnection(); }
|
И при включённом и выключенном ISA Client результат
| Код | - ntlm authentication scheme selected - Failure authenticating with NTLM <any realm>@ms-proxy:8080 HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. )
|
Последние два результата отличаются 1. No credentials available for NTLM <any realm>@ms-proxy:8080 2. Failure authenticating with NTLM <any realm>@ms-proxy:8080
Но в чём разница я не очень понимаю.
Я правильно понимаю, что username и pass, нужно задавать те под которыми я захожу к себе на машину? Попытался поискать про NTLM и Java? но чего-то не сильно въехал
Может кто знает, как с этим справиться?
Спасибо.
|