Как заставить HttpURLConnection использовать прокси?
Если я это сделаю...
conn = new URL(urlString).openConnection();
System.out.println("Proxy? " + conn.usingProxy());
печати
Proxy? false
проблема в том, что я за прокси. Откуда JVM получает информацию о прокси-сервере в Windows? Как мне это настроить? Все мои другие приложения кажутся совершенно счастливыми с моим прокси.
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