Не удалось получить исходный код веб-страницы
Я пытаюсь получить исходный контент 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);
}