407 не может туннелировать через прокси - PullRequest
4 голосов
/ 13 ноября 2010

У нас есть один веб-сервис, который вызывает сторонний веб-сервис. Для проверки этой реализации у нас есть разные среды.

  • Локальный компьютер разработчика: Когда мы запускаем приложение, все работает нормально, и наш веб-сервис может найти сторонний URL. (Локальный компьютер использует ОС Windows)

  • Локальный сервер разработки: После развертывания приложения на сервере разработки мы не можем получить доступ к стороннему URL-адресу и получить ошибку Http Proxy 407. (У нас Linux с IBM J9 JVM.)

Чтобы обойти эту проблему, мы попытались установить -Dhttps.proxyUser XXX -Dhttps.proxyPassword XXX, но мы продолжали получать ошибку. Второй вариант, который мы попробовали, использует Authenticator.setDefault(new CustomImplAuthenticator()). Но, что удивительно, JVM не вызывала getPasswordAuthentication и продолжала выдавать ошибку.

Мы снова запустили то же приложение на локальной машине разработчика с кодом authenticator.setdefault. Мы могли получить доступ к URL, как было сказано ранее, но на этот раз JVM снова не вызвал метод getPasswordAuthentication. После поиска по сети мы обнаружили, что с помощью NTLM аутентификационные данные разрешаются, и, следовательно, мы чувствуем, что код работает на Windows.

Может кто-нибудь сообщить мне, какие настройки мы должны настроить для приложения, развернутого в Linux, чтобы была вызвана как минимум реализация, назначенная для Authenticator.setDefault.

1 Ответ

1 голос
/ 09 сентября 2011

Это зависит от того, как вы создаете ваше http-соединение. например, если вы используете Apache HTTPClient, вы можете установить конфигурацию прокси в DefaultHttpClient, вызвав setProxyAuthenticationHandler.

Ваша реализация, выполняющая вызов http, должна знать о прокси.

...