407 не может туннелировать через прокси

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

  • Локальный компьютер разработчика: когда мы запускаем приложение, все работает нормально, и наш веб-сервис может найти сторонний 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 ответ

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

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

Другие вопросы по тегам