Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.229.110.49] |
|
Сообщ.
#1
,
|
|
|
Добрый день уважаемые! Подскажите как можно реализовать определение прокси-сервера? Т.е идет обращение к ресурсу и если ПК использует выход через прокси, то показать окно для заполнения. Как вариант можно использовать коды ошибок и если возвращается ошибка 407 то значить используется прокси. Но думаю это коряво и неправильно. Есть какие то методы стандартные в Яве?
Добавлено Что-то ничего не пойму я. Пробую int c; URL hp = new URL("http://forum.sources.ru"); HttpURLConnection hpCon = (HttpURLConnection)hp.openConnection(); System.out.println("Метод: " + hpCon.getRequestMethod()); System.out.println("Код ответа: " + hpCon.getResponseCode()); System.out.println("Сообщение ответа: " + hpCon.getResponseMessage()); long len = hpCon.getContentLengthLong(); if(len != -1) { InputStream input = hpCon.getInputStream(); while((c=input.read()) != -1) { System.out.print((char)c); } input.close(); } Получаю Метод: GET Код ответа: 200 Сообщение ответа: OK <html><body><h1>It works!</h1> <p>This is the default web page for this server.</p> <p>The web server software is running but no content has been added, yet.</p> </body></html> Т.е проходит. Как так? У меня ПК за прокси. Браузер по крайней мере требует данные прокси. Почему тогда проходит вызов из ИДЕ? |
Сообщ.
#2
,
|
|
|
потому что java по умолчанию использует "системные" настройки прокси
Добавлено http://stackoverflow.com/questions/4933677...ting-using-java |
Сообщ.
#3
,
|
|
|
Емнип, есть какой-то system property который за это отвечает, типа "использовать системный прокси".
|
Сообщ.
#4
,
|
|
|
Цитата dark_barker @ Емнип, есть какой-то system property который за это отвечает, типа "использовать системный прокси". Наверное это он System.setProperty("java.net.useSystemProxies","true"); Но вопрос в другом.Почему не требует имя пользователя и пароль? |
Сообщ.
#5
,
|
|
|
А вот пример без использования System.setProperty("java.net.useSystemProxies","true");
//From project ant, under directory /src/main/org/apache/tools/ant/util/java15/, in source file ProxyDiagnostics.java ** * Get the diagnostics for proxy information. * @return the information. */ public String toString(){ ProxySelector selector=ProxySelector.getDefault(); List list=selector.select(destURI); StringBuffer result=new StringBuffer(); Iterator proxies=list.listIterator(); while (proxies.hasNext()) { Proxy proxy=(Proxy)proxies.next(); SocketAddress address=proxy.address(); if (address == null) { result.append("Direct connection\n"); } else { result.append(proxy.toString()); if (address instanceof InetSocketAddress) { InetSocketAddress ina=(InetSocketAddress)address; result.append(' '); result.append(ina.getHostName()); result.append(':'); result.append(ina.getPort()); if (ina.isUnresolved()) { result.append(" [unresolved]"); } else { InetAddress addr=ina.getAddress(); result.append(" ["); result.append(addr.getHostAddress()); result.append(']'); } } result.append('\n'); } } return result.toString(); } |