SOAP-соединения через прокси с использованием URLEndpoint - PullRequest
7 голосов
/ 08 февраля 2011

Мне пришлось обновить предыдущее Java-приложение, которое запрашивает ответ SOAP от внешнего веб-сервиса.Эта служба находится за пределами нашего брандмауэра, который теперь требует, чтобы мы проходили через прокси-сервер вместо прямого обращения к URL-адресу.

В настоящее время приложение Java использует URLEndpoint, который принимает строку для URL-адреса.Обычно, когда я получаю URL через прокси, я создаю URL примерно так:

URL url = new URL("http", "theproxy.com", 5555, finalUrl);

Проблема в том, что URLEndpoint принимает только строку для URL, я пытался преобразовать URL в строку с помощью toExternalForm ()но он исказил URL.

Есть идеи, как обойти это?

РЕДАКТИРОВАТЬ: я не могу использовать System.setProperty, поскольку он работает с целой кучей других приложений Java в tomcat.

второе редактирование: я не могу установить системные свойства, поскольку они будут переопределять все другие приложения, работающие на сервере, я не могу использовать jsocks в качестве прокси, который мы запускаем через прокси-сервер squid, который не поддерживает socks4 /5

Любая помощь приветствуется.

Ответы [ 3 ]

8 голосов
/ 10 февраля 2011

Это не так, как работает прокси.Прокси работает так, что вы берете свой обычный URL:

http://example.com/service

и вместо поиска «example.com» и порта 80 вместо этого отправляется сообщение на ваш прокси-хост (http://theproxy.com:5555).

Java имеет встроенную обработку прокси с использованием системных свойств http.proxyHost и http.proxyPort.

Так что в вашем случае вам потребуется:

System.setProperty("http.proxyHost", "theproxy.com");
System.setProperty("http.proxyPort", "5555");

Затем ваш коддолжен, в идеале, «Просто работать».

Здесь - страница, документирующая свойства прокси.

0 голосов
/ 27 марта 2012

О конструкторе URL с индивидуальной настройкой прокси:

http://edn.embarcadero.com/article/29783

(извините, у меня нет прав комментировать)

0 голосов
/ 17 февраля 2011

Используйте Apache HttpClient и делайте, как показано в этом примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...