Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Axis1.4, HTTPClient - прокси не пропускает


Автор: Samik 21.11.2008, 18:27
Всем привет.

Нужна помощь.

Есть задача: достучаться до внешнего веб сервиса 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();
        }


всё отлично результат в консоли 
Код

"HTTP/1.1 200 OK"


Выключил 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? но чего-то не сильно въехал

Может кто знает, как с этим справиться? 

Спасибо.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)