2016-06-20 2 views
1

Я пытаюсь использовать HTTP-сообщение для отправки файла на веб-сервер, для которого требуется базовая аутентификация.Базовая аутентификация HTTP в Java с прокси

На моем рабочем месте недавно реализовано изменение прокси-сервера, и теперь ему также требуется базовая аутентификация.

Как я могу ввести свои учетные данные для обоих этих серверов в одном запросе HttpPost?

ответ

2

Оказывается, мне нужно, чтобы добавить заголовок "Proxy-Authorization", а также.

HttpPost httpPost = new HttpPost("http://host:port/test/login"); 

String encoding = Base64Encoder.encode ("your_user:your_password"); 
httpPost.setHeader("Authorization", "Basic " + encoding); 

String proxyEncoding = Base64Encoder.encode ("proxy_user:proxy_password"); 
httpPost.setHeader("Proxy-Authorization", "Basic " + proxyEncoding); 

System.out.println("executing request " + httpPost.getRequestLine()); 
HttpResponse response = httpClient.execute(httpPost); 
0

Вам нужно добавить в вашем заголовке HTTP следующей строки, как описано в basic authorization:

  1. Имя пользователя и пароль в сочетании с одним двоеточием.

  2. Полученная строка кодируется с использованием варианта RFC2045-MIME Base64, за исключением, без ограничения, 76 символов/линий.

  3. Метод авторизации и пробел, то есть «Базовый», затем помещаются перед закодированной строкой.

Посмотрите, например, с Apache HTTPClient:

String encoding = Base64Encoder.encode ("your_login:your_password"); 
HttpPost httppost = new HttpPost("http://host:post/test/login"); 
httppost.setHeader("Authorization", "Basic " + encoding); 

System.out.println("executing request " + httppost.getRequestLine()); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity entity = response.getEntity(); 
+0

Таким образом, логин и пароль для веб-сервера. Как насчет имени пользователя и пароля прокси-сервера? – satbot