我正在尝试使用 Java从此站点获取 HTML 页面源内容:“ http://207.200.96.231:8008 ”。然而,Java 的默认库在这方面对我没有帮助。我也尝试使用本教程,但也没有用。我认为问题的出现是因为网站的安全保护。当我运行下面提供的以下代码时,我得到一个异常:java.io.IOException: Invalid Http response
.
关于如何实现代码的任何想法?或者有没有可以满足我需求的图书馆?到目前为止,我已经尝试过JSoup
HTML Jericho
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和垃圾桶的帮助下,我设法解决了这个问题。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();
}