Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > httpclient proxy авторизация


Автор: Amaz0nka 23.4.2007, 19:46
Никак не получается авторизироваться на прокси сервере. Вот код:
Код

HostConfiguration configuration = new HostConfiguration();
    configuration.setProxy("sofia.niks.by", 8080);
    HttpClient client = new HttpClient();
    client.setHostConfiguration(configuration);
    client.getState().setProxyCredentials(AuthScope.ANY, new UsernamePasswordCredentials("login", "pasword"));


но в итоге выдаёт что
Код

23.04.2007 19:41:44 org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: ntlm authentication scheme selected
23.04.2007 19:41:44 org.apache.commons.httpclient.HttpMethodDirector authenticate
SEVERE: Credentials cannot be used for NTLM authentication: org.apache.commons.httpclient.UsernamePasswordCredentials


Автор: Amaz0nka 24.4.2007, 10:35
Вот оказывается как это всё делается  smile 
Код

    HttpClient client = new HttpClient();
    HttpMethod method = new GetMethod(url);
    HostConfiguration hostConfig= client.getHostConfiguration();
    hostConfig.setProxy("sofia.niks.by", 8080);
    client.getState().setProxyCredentials(AuthScope.ANY,
    new NTCredentials("login","password","",""));

Автор: Hidrag 24.4.2007, 12:00
Или проще так: 
Код

HttpClient client = new HttpClient();
client.getHostConfiguration().setProxy("Proxy.host", 8080);


Автор: LSD 24.4.2007, 13:19
Hidrag, а в чем разница (ну кроме того, что ты избавился от переменной hostConfig)?

Автор: Hidrag 24.4.2007, 14:47
в принципе никакой, меньше кода smile

Автор: COVD 24.4.2007, 18:58
Обьясните, пожалуйста, а почему возникает необходимость явно авторизовываться и вообще знать про какой-то прокси сервер. Почему это автоматом не всегда работает. Пользователь имеет доступ в интернет, но обычно понятия не имеет о том, как это настроено. Представьте, что вы хотите использовать httpClient в апплете. И что, там надо тоже так делать?

Автор: sergejzr 24.4.2007, 19:02
Данные прокси задаются лишь в том случае, если пользователя не устраивает соединение по умолчанию.

Автор: COVD 24.4.2007, 19:05
Понятно, спасибо. 

Автор: Hidrag 24.4.2007, 20:31
Цитата(sergejzr @  24.4.2007,  19:02 Найти цитируемый пост)
Данные прокси задаются лишь в том случае, если пользователя не устраивает соединение по умолчанию.

Ну не всегда, например в локальной сети один комп имеет прямой доступ в инет, а остальные настраивают на него проксю и тоже пользуются всеми благами инета smile

Автор: sergejzr 25.4.2007, 10:56
Цитата(Hidrag @  24.4.2007,  19:31 Найти цитируемый пост)
в локальной сети один комп имеет прямой доступ в инет, а остальные настраивают на него проксю..

Это не опровергает моего тезиса.

Автор: LSD 25.4.2007, 14:07
Цитата(COVD @  24.4.2007,  19:58 Найти цитируемый пост)
Обьясните, пожалуйста, а почему возникает необходимость явно авторизовываться и вообще знать про какой-то прокси сервер. Почему это автоматом не всегда работает. Пользователь имеет доступ в интернет, но обычно понятия не имеет о том, как это настроено. Представьте, что вы хотите использовать httpClient в апплете. И что, там надо тоже так делать?

Это у апплетов как правило proxy настроено верно. А snadalone приложение, как правило не имеет данных о выходе в сеть.

Автор: antsh 23.10.2007, 21:56
Привет.

Может кто нибудь дать пример полной имплементации НТЛМ авторизации, со всеми необходимами либами и настройками, а то я что то не могу понять в чём у меня трабл.

Автор: Hidrag 24.10.2007, 10:11
antsh, Опиши траблу там видно будет, либа одна httpclient а можно и вовсе без нее, стандартными средствами из java.net.*. По сути тебе нужно составить http запрос и отправить его методом пост или гет на http сервер, затем прочитать полученный ответ...

Автор: antsh 24.10.2007, 16:16
Вроде как самому получилось всё рарешить. Я до сих пор не могу получить соединение но ошибка тепер "неверный юзер или пароль" - это уже куда понятней. Буду завтра разбираться с акаунтом.

Автор: antsh 25.10.2007, 09:27
Я понял в чём моя проблема: 
org.apache.commons.httpclient.HttpClient; - работает только с NTLMv1, а мне нужна версия 2. Понял что сервак юзает 2 версию когда смог авторизировать себя спомощью платного рподукта  com.oaklandsw.http.HttpURLConnection;

Кто-нибудь иммет имплементацию NTLMv2?

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