Не удалось получить исходный код веб-страницы

Я пытаюсь получить исходный контент HTML-страницы с этого сайта: " http://207.200.96.231:8008/" с использованием Java. Однако стандартные библиотеки Java не помогли мне в этом. Я также пытался использовать этот учебник, но он тоже не работал. Я думаю, что проблема возникает из-за защиты сайта. Когда я запускаю следующий код, представленный ниже, я получаю исключение: java.io.IOException: Invalid Http response,

Любые идеи о том, как реализовать код? Или есть какие-то библиотеки, которые могут удовлетворить мои потребности? Пока я пробовал JSoup а также Jericho HTML Parser думал, что они будут использовать другой подход к подключению к сайту, который я предоставил, но они также не смогли работать.

String urlstr = "http://72.26.204.28:9484/played.html";

try {

    URL url = new URL(urlstr);

    URLConnection urlc = url.openConnection();

    InputStream stream = urlc.getInputStream();
    BufferedInputStream buf = new BufferedInputStream(stream);

    StringBuilder sb = new StringBuilder();

    while ( true){

    int data = buf.read();

    if ( data == -1)
        break;
    else
        sb.append((char)data);
    }

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
}

РЕДАКТИРОВАТЬ (проблема решена): С помощью Karai17 и trashgod мне удалось решить эту проблему. Странице Shoutcast нужен пользовательский агент для доступа к ее содержимому. Так что все, что нам нужно сделать, это добавить этот код:

urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0");

Последний код выглядит так:

try {
        URL url = new URL("http://207.200.96.231:8008/7.html");
        HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
        urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0");

        InputStream is = urlConnection.getInputStream();
        BufferedInputStream in = new BufferedInputStream(is);
        int c;
        while ((c = in.read()) != -1) {
            System.out.write(c);
        }
        urlConnection.disconnect();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
}

1 ответ

Решение

Этот поток требует Winamp.

$ curl -v http://207.200.96.231:8008
* О подключении () к 207.200.96.231 порту 8008 (#0)
* Попытка 207.200.96.231... подключена
* Подключен к 207.200.96.231 (207.200.96.231) порту 8008 (# 0)
Кажется, требуется [Winamp] [2].

> GET / HTTP / 1.1
> User-Agent: curl /...
> Ведущий: 207.200.96.231:8008
> Принять: */*
> 
Лед 200 ок
ледяной notice1: 
Этот поток требует Winamp
icy-note2: распределенный сетевой аудиосервер SHOUTcast / Linux v1.9.93atdn
icy-name: Absolutely Smooth Jazz - SKY.FM - самый плавный джаз в мире 24 часа в сутки айс-жанр: мягкий гладкий джаз ледяной URL: HTTP://www.sky.fm/smoothjazz/ тип контента: аудио / MPEG ледяной паб: 1 ледяной уш:96 ...

Приложение: Вы можете прочитать поток так:

URL url = new URL("http://207.200.96.231:8008");
URLConnection con = url.openConnection();
InputStream is = con.getInputStream();
BufferedInputStream in = new BufferedInputStream(is);
int c;
while ((c = in.read()) != -1) {
    System.out.write(c);
}
Другие вопросы по тегам