Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [java] http запрос


Автор: GrayCardinal 12.2.2011, 18:25
Добрый день !
Наваяйте (или киньте линк), пожалуйста, программу, которая делает одну простую вещь. А именно - посылает HTTP GET запрос, получает ответ, и выводит его на консоль.

У меня linux.

Заранее спасибо,
Олег.

Автор: rsm 16.2.2011, 17:41
Вроде ж в десяток строчек решение? smile
Код

import java.io.*;
import java.net.*;

class VinGet
{
    public static void main(String args[])
    {
        try
        {            
            // имя сервера
            
            String server_address = "vingrad.ru";
            
            // порт сервера
            
            int server_port = 80;
            
            // URL запрашиваемой страницы
            
            String web_page_url = "http://forum.vingrad.ru/forum/topic-322394.html";
            
            // создали сокет
            
            Socket socket = new Socket(InetAddress.getByName(server_address), server_port);
            
            // записали в него сформированный GET-запрос
            
            socket.getOutputStream().write(new String("GET " + web_page_url + "\n").getBytes());
            
            // пнули чтоб данные отправил
            
            socket.getOutputStream().flush();

            // создали "читателя" ответа с сервера

            BufferedReader answer_source = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            // читаем построчно и пишем в консоль

            String answer;

            while ((answer = answer_source.readLine()) != null)
                System.out.println(answer);

            // закрыли сокет

            socket.close();
        }

        catch(Exception e)
        {
            // если случился косяк, отловили и показали трассировку стека
            
            e.printStackTrace();
        }
    }
}

Автор: GrayCardinal 17.2.2011, 10:43
rsm, 
Спасибо, конечно, но это не совсем то что надо :( Хотелось бы с использованием какой-либо лайбы, которая, как  минимум, распарсит ответ :(

Автор: LSD 17.2.2011, 12:36
А нафига парсить ответ, чтобы вывести его на консоль? smile 

Автор: GrayCardinal 17.2.2011, 13:04
LSD, 
Так мне нужен ответ, без "лишнего". К примеру при chunked ответе в теле будут лишние цифры...

Автор: LSD 17.2.2011, 17:44
А ты думаешь парсер HTML сможет собрать chunked ответ smile

Используй URL.openConnection(). Он должен все это взять на себя.

Автор: GrayCardinal 17.2.2011, 17:56
LSD, 
Причем тут парсер HTML ?  smile  Мне нужен парсер HTTP. Я не догоняю, неужели в Java нет HTTP-клиента ?!

Автор: LSD 18.2.2011, 14:14
GrayCardinal, ты выражался бы по яснее что тебе нужно. То тебе нужен парсер HTTP,  то тебе нужен просто HTTP-клиент.

Если тебе нужно просто получить HTML и вывести его в консоль, то как я уже говорил URL.openConnection(). Если что-то более сложное: http://hc.apache.org/httpcomponents-client-ga/.

Автор: GrayCardinal 18.2.2011, 16:43
LSD, 
Мне уже ничего не надо :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)