Как заставить HttpURLConnection использовать прокси?



Если я это сделаю...



conn = new URL(urlString).openConnection();
System.out.println("Proxy? " + conn.usingProxy());


печати



Proxy? false


проблема в том, что я за прокси. Откуда JVM получает информацию о прокси-сервере в Windows? Как мне это настроить? Все мои другие приложения кажутся совершенно счастливыми с моим прокси.

1037   7  

7 ответов:

начиная с java 1.5 вы также можете передать экземпляр java.net.Proxy в openConnection(proxy) способ:

//Proxy instance, proxy ip = 10.0.0.1 with port 8080
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.0.1", 8080));
conn = new URL(urlString).openConnection(proxy);

Если ваш прокси требует аутентификации, он даст вам ответ 407.

В этом случае вам потребуется следующий код:

    Authenticator authenticator = new Authenticator() {

        public PasswordAuthentication getPasswordAuthentication() {
            return (new PasswordAuthentication("user",
                    "password".toCharArray()));
        }
    };
    Authenticator.setDefault(authenticator);

это довольно легко ответить из интернета. Установите системные свойства http.proxyHost и http.proxyPort. Вы можете сделать это с помощью System.setProperty(), или из командной строки с помощью тега -D синтаксис.

Прокси поддерживаются через два системных свойства: http.proxyHost и http.proxyPort. Они должны быть установлены на прокси-сервер и порт соответственно. Следующий базовый пример иллюстрирует это:

String url = "http://www.google.com/",
       proxy = "proxy.mydomain.com",
       port = "8080";
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
readResponse(in);

установлено следующее, Прежде чем содержащие вредоносные элементы,

System.setProperty("http.proxyHost", "host");
System.setProperty("http.proxyPort", "port_number");

если прокси требует аутентификации,

System.setProperty("http.proxyUser", "user");
System.setProperty("http.proxyPassword", "password");

вы также можете установить

-Djava.net.useSystemProxies=true

в Windows и Linux это будет использовать системные настройки, так что вам не нужно повторять себя (сухой)

http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html#Proxies

для Java 1.8 и выше необходимо установить -Djdk.http.auth.tunneling.disabledSchemes= чтобы прокси с базовой авторизацией работали с https.

утвержденный ответ будет работать ... если вы знаете свой прокси-хост и порт=). Но в случае, если вы ищете прокси-хост и порт, следующие шаги должны помочь

если указан автоматически настроенный прокси: тогда

1> Откройте IE(или любой браузер)

2 > получить url-адрес из Вашего браузера через IE - > инструменты - >интернет опция - > соединения - > настройки LAN-> получить адрес и дать url, например: как http://autocache.abc.com/ и введите, файл будет загружен с помощью .формат pac, сохранить на рабочий стол

3> открыть .pac-файл в текстовой панели, определите прокси:

в вашем редакторе, это будет что-то вроде:

обратный "прокси-сервер веб-прокси.Инд.АВС.ком:8080; доверенности прокси.ПМГ.АВС.ком:8080";

спасибо бекур от maven в 5 мин не работает

Как только у вас есть хост и порт, просто зайдите в это, и вам хорошо иди

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("web-proxy.ind.abc.com", 8080));
        URLConnection connection = new URL(url).openConnection(proxy);

Comments

    Ничего не найдено.