第一种方式只是url.openStream,然后是InputStreamReader,
StringBuffer temp = new StringBuffer();
URL url = new URL(addr);
BufferedReader bf = new BufferedReader(new InputStreamReader(url.openStream(),"ISO-8859-1"), BUFFER_SIZE );
int charsRead;
char[] copyBuffer = new char[BUFFER_SIZE];
while ((charsRead = bf.read(copyBuffer, 0, BUFFER_SIZE)) != -1) {
temp.append(copyBuffer, 0, charsRead);
}
bf.close();
我发现结果与IE / Chrome的结果不同。
第二种方式首先使用HttpURLConnection,然后使用getInputStream,然后使用InputStreamReader
URL url = new URL(addr);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer temp = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
temp.append(inputLine);
}
in.close();
如果我查看源代码,这将返回IE中的确切内容。
所以我的问题是:
为什么有时使用url.openStream的第一个方法会返回与我从IE中读取的html不同的html?缺少标签,车厢返回数量不同(问题2)
我注意到第一种方法的html具有合理的回车。来自第二种方法的那种没有回车。 IE视图源显示比第一种方法更多的回车。这是为什么?
谢谢!
答案 0 :(得分:1)
网站根据不同的内容提供不同的输出,例如用户代理,发送的接受标头,可用的Cookie /会话,接受的语言标头等
这些东西会改变服务的html,因为它适应客户的需求。
因此,在您的情况下,您有一个不同的User-Agent和其他标题,因此响应可能因此而异。