Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочу скачать страницу через прокси 
V
    Опции темы
Dweep
Дата 17.6.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



Раньше немного программировал на джава,  потом перешел на пхп, сейчас понадобилось написать програмку на джаве.

Нужен код, что б скачать страницу через прокси, собственно вопрос

Код


                URL url = new URL("http://google.com/search?q=info:http://azov.kiev.ua");
        BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        StringBuffer buffer = new StringBuffer();
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
            buffer.append("\n");
        }
        System.out.println(buffer);



этот код выдает 

Код

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.google.com/search?q=info:http://azov.kiev.ua
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at test.main(test.java:107)



Причем если скачивать страницу http://google.com - работает нормально.  

Нужен код, который сможет скачать эту страницу с использованием прокси- сервера (адреса прокси серверов есть).


PM MAIL   Вверх
AlexeyVorotnikov
Дата 18.6.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 1
Всего: 18



Код

SocketAddress proxyAddress = new InetSocketAddress("192.168.0.1", 8080);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress);
URL url = new URL("http://google.com/search?q=info:http://azov.kiev.ua");
URLConnection urlConnection = url.openConnection(proxy);
InputStream inputStream = urlConnection.getInputStream();

Или использовать HttpClient.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Dweep
Дата 19.6.2008, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



Чет не работает ничего.

Это код 

Код

                                SocketAddress proxyAddress = new InetSocketAddress("193.191.145.30", 80);
                Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress);
                URL url = new URL("http://google.com/search?q=info:http://azov.kiev.ua");
                URLConnection urlConnection = url.openConnection(proxy);
                InputStream input = urlConnection.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                String line = null;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                }
                input.close();


Выкидывает эксепшн 


Код

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(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$4.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.<init>(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.http.HttpClient.New(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)end

    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at LoadThread.run(LoadThread.java:31)



Пока осилил такое написать

   
Код

                             Socket socket = new Socket("google.com", 80);
                OutputStream output = socket.getOutputStream();    
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));                
                writer.write(request);
                writer.flush();
                InputStream input = socket.getInputStream();                
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                String line = null;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                }
                input.close();
                socket.close();    

где request - HTTP-заголовок, считывается с файла.
Но этот код выдает русские буквы в непонятной кодировке, и я не разобрался как скачивать страницу через proxy.

Напишите рабочий код, который загрузит страницу http://google.com/search?q=info:http://azov.kiev.ua через прокси, и выведет ее код на экран в нормальной кодировке. 
Написавшему вышлю вознеграждение в размере 10wmz.


PM MAIL   Вверх
Dweep
Дата 23.6.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



Уже почти разобрался во всем. 
Осталась проблема, если пишу порт и адрес работающего прокси

Код

systemProperties.setProperty("http.proxyHost","85.19.70.82");
systemProperties.setProperty("http.proxyPort","80");


то программа работает коректно, а если написать адрес или порт неправильно, или прокси недоступен - то программа загружает информацию через мой адрес.

Код

systemProperties.setProperty("http.proxyHost","85.19.70.82");
systemProperties.setProperty("http.proxyPort","802");


Как написать, что б если прокси недоступен - то сообщать ине об этом, а не загружить инфу  с моего IP ? 
PM MAIL   Вверх
LSD
Дата 23.6.2008, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Dweep @  23.6.2008,  16:23 Найти цитируемый пост)
Как написать, что б если прокси недоступен - то сообщать ине об этом, а не загружить инфу  с моего IP ? 

Используй код AlexeyVorotnikov. Или попытайся вначале установить сокетное соединение с прокси сервером (хотя это менее надежно).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Dweep
Дата 23.6.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 1.11.2005

Репутация: нет
Всего: нет



Спасибо, разобрался. действительно код AlexeyVorotnikov помог.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.