установить прокси в Java - PullRequest
       6

установить прокси в Java

3 голосов
/ 16 марта 2011

Я создаю сервис, который публикует что-то через интернет, и все в порядке. Но когда я развертываю его на нашем сервере, я получаю статус соединения: 403, запрещено. Я думаю, это потому, что наш сервер не разрешит прямой доступ к Интернету без входа в систему. Сначала мы должны войти в браузер с нашим именем пользователя / паролем, чтобы получить доступ к Интернету.

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

Я попытался установить прокси в коде Java, но безрезультатно. Может ли кто-нибудь помочь мне с этой проблемой? Вот я публикую свой сервисный фрагмент.

System.getProperties().put("http.proxySet", "true");
System.getProperties().put("http.proxyHost", myHost);
System.getProperties().put("http.proxyPort", "8080");
System.getProperties().put("http.proxyUser", myUser);
System.getProperties().put("http.proxyPassword", myPassword);
System.getProperties().put("http.nonProxyHosts", "localhost|127.0.0.1");

try {
            URL url = new URL(urlAddress);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();          
            con.setRequestMethod("POST");
            con.setDoOutput(true);
            con.setDoInput(true);  

            ...

            if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                System.out.println("connection OK");
                istrm = con.getInputStream();
                if (istrm == null) {
                    System.out.println("istrm == null");
                }

                ...

            } else {
                System.out.println("Response: " + con.getResponseCode() + ", " + con.getResponseMessage());
            }
}

И мой процесс переходит в блок else и получает ответное сообщение 403

Ответы [ 4 ]

4 голосов
/ 16 марта 2011

Попробуйте вместо этого использовать System.setProperty (String, String).

3 голосов
/ 29 июня 2011

Так вы устанавливаете прокси для всего приложения.

System.setProperty("https.proxyHost", "myproxy.domain.com"); 
System.setProperty("https.proxyPort", "myport"); 

ПРИМЕЧАНИЕ: используйте http.proxyHost и http.proxyPort, если вам не требуется https.

1 голос
/ 17 мая 2018

Если вы используете прокси в своей системе ... (я имею в виду в вашей операционной системе) Вы можете использовать эту строку кода:

System.setProperty("java.net.useSystemProxies", "true");
1 голос
/ 16 марта 2011

Я думаю, что проблема в том, что вы устанавливаете свойства слишком поздно. Код маршрутизатора HTTP-запроса может прочитать эти свойства один раз во время своей инициализации. Если ваш код устанавливает свойства после инициализации маршрутизатора HTTP-запроса, новые значения свойств не будут действовать ... если только вы не сможете заставить маршрутизатор запроса выполнить повторную инициализацию.

Один из способов гарантировать, что ваши настройки свойств прокси вступят в силу, - установить их в командной строке java, которая запускает веб-сервер; например с помощью Tomcat в Linux вы можете сделать это, установив соответствующие параметры «-D ...» в переменной среды JAVA_OPTS.

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