Проблема аутентификации прокси с HttpClient - PullRequest
2 голосов
/ 19 апреля 2011

У меня толстое клиентское приложение, которое подключается к серверу в Интернете для передачи и загрузки файлов.

Однако доступ к Интернету осуществляется через прокси.Я использую HttpClient на толстом клиенте и загрузку файлов Apache Commons на стороне сервера.

Я устанавливаю прокси на HttpClient, как показано ниже:

HttpClient client = new  HttpClient(); 
HostConfiguration config = client.getHostConfiguration(); 
config.setProxy(PROXY_HOST, PROXY_PORT); 

PostMethod filePost = new PostMethod(servletPath); 
int status = client.executeMethod(config , filePost); 

Однако вместо значений жесткого кодирования для PROXY_HOST, PROXY_PORT выше, я использую HttpUrlConnection, чтобы получить информацию прокси и установить вэти значения.Это отлично работает.

Если я не установил настройки прокси-сервера, как это, HttpClient игнорирует мои настройки прокси-сервера и не определяет их автоматически, и в результате мое приложение не может подключиться к серверу в Интернете.

Теперь, когда я подключаюсь к серверу с помощью HttpClient, запрос проходит через прокси, но не выполняется, так как он ожидает учетные данные аутентификации пользователя для предоставленной информации прокси.Я не могу найти способ, как заставить это работать, поскольку я ожидал всплывающее окно для ввода пользователем идентификатора пользователя и пароля, после подключения к прокси-серверу вместо полного сбоя запроса.

Может кто-нибудь подсказать, как заставить HttpClient работать с прокси без жесткого кодирования значений PROXY_HOST, PROXY_PORT.

Также это приложение будет запущено из толстого клиента для разных пользователей.Таким образом, информация о прокси должна автоматически обнаруживаться в настройках браузера (что делает для меня HttpUrlConnection).

Может кто-нибудь предложить решение для этого сценария?

1 Ответ

1 голос
/ 07 августа 2011

Для прокси и порта я бы предложил использовать свойство System в командной строке java следующим образом:

java -Dhttp.proxyHost=myproxyserver.com -Dhttp.proxyPort=80 MyMainClass

Пользователь и пароль будут запрашиваться у пользователя через графический интерфейс пользователя, а затем устанавливаться с помощью System.getProperties() .put (String, String) метод.Параметры:

  • http.proxyUser
  • http.proxyPassword

Полная документация доступна здесь .Статью, касающуюся вашей конкретной проблемы, можно найти здесь .

...