Войти или зарегистрироваться

Помогите Proxy для HttpURLConnection

  • Автор темы Автор темы makssof
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

makssof

Старожил
Девелопер
Пользователь
Баллы
103
Вообще не пойму я, почему не работает?
Java:
URL url = new URL(request);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(213.85.92.10, 80));
HttpURLConnection connection = (HttpURLConnection)url.openConnection(proxy);
Если я:
Java:
InputStream algIn = connection.getURL().openStream();
StringWriter algSB = new StringWriter();
while(algIn.available() > 0) algSB.write(algIn.read());
То algSB.toString() будет такой, какой был бы БЕЗ прокси. В чекере проксей проверил прокси - рабочий. Другие рабочие прокси ставил - шиш. Вообще странно. Как мне получать содержимое через прокси?

Призываю силу света:
@fromgate , @Den_Abr , @BeYkeR , @JustBlender , @Ission , @Hilgert , @Shevchik
 
Последнее редактирование:
Эх... Ладно, пойду на кибер форум.
И всё таки подожду ещё чуть чуть тут. :)
 
Последнее редактирование:
connection.getURL().openStream(); Вот в этом проблема.
Проследи за логикой выполнения своего кода внимательно. А заодно и внутрь стандратных классов загляни, сразу поймёшь почему игнорируется прокси.
 
connection.getURL().openStream(); Вот в этом проблема.
Проследи за логикой выполнения своего кода внимательно. А заодно и внутрь стандратных классов загляни, сразу поймёшь почему игнорируется прокси.
Окей, прочитал я в доке вот что:
Same as openConnection(), except that the connection will be made through the specified proxy; Protocol handlers that do not support proxing will ignore the proxy parameter and make a normal connection.
мол, обработчики, которые не поддерживают прокси, будут игнорить их. Это как раз про connection.getURL().openStream() , я прав?
Но я ещё пробовал connection.getInputStream() , он вызывает
java.net.ConnectException: Connection refused: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient$1.run(Unknown Source)
at sun.net.www.http.HttpClient$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.http.HttpClient.privilegedOpenServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Main.main(Main.java:45)
Хочу заметить: вызывает он этот эксцепшн если я передам .openConnection()'y параметр типа Proxy. Если же я не буду передавать ему прокси, .getInputStream() будет работать нормально.
Так всё таки, как мне сделать получение содержимого через прокси? Можно примерчик? Позязя. :)

P.S. У меня в эклипсе есть плагин, которые исправляет Source not found. Он просто декомпилит тот класс, который я хочу посмотреть. Я это к чему: я смотрел "кишки" классов, но всё равно не очень понял. :(
 
Вот что ты делаешь: ты создаёшь новый connection внутрь которого пихаешь урл, а потом просто снова забираешь этот урл и открываешь соединение.

Таким образом такая фигня
URL url = new URL(request);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(213.85.92.10, 80));
HttpURLConnection connection = (HttpURLConnection)url.openConnection(proxy);
InputStream algIn = connection.getURL().openStream();
упрощается до такого.
URL url = new URL(request);
InputStream algIn = connection.getURL().openStream();

И тут сразу понятно что прокси сервер ты нигде не используешь.
Почему именно так? Просто потому что getURL() возвращает вот этот объект HttpURLConnection connection = (HttpURLConnection)url.openConnection(proxy);

А ошибка в методе getInputStream() показывает что прокся отказала в соединении.
 
Т.е. вариант с getInputStream() верный, просто прокся "не катит"?
Или?..
Да, я тугой. (
 
Вариант верный, но прокся не катит.
 
Поменял проксю - заработало! Спасибо @Shevchik что помог. :)
 
Лол, мне оповещения даже не приходили :c Мог бы помочь..
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх