当我运行这个Java程序时......
url = new URL("http://www.microsoft.com");
URLConnection conn = url.openConnection();
// open the stream and put it into BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = br.readLine()) != null) {
System.out.println(inputLine);
}
br.close();
我没有返回数据。使用地址www.stackexchange.com返回一些HTML,但不是我在Web浏览器中看到的完整HTML。有人能解释一下这里发生了什么吗?
由于
答案 0 :(得分:0)
您在浏览器中看到的是多次调用服务器的结果。在第一次调用中,加载了顶级html。浏览器解析相同的内容并多次调用服务器以获取其他资源,如js,css,images等。
应用js,css等。这反过来可能导致从服务器加载更多数据并更新html。因此,您在浏览器上看到的内容是多次调用的结果。我假设您不打算编写浏览器实现。
这解释了为什么你会在stackoverflow.com的情况下看到部分结果。你刚刚获得了准系统html页面。
现在,对于microsoft.com,请尝试在浏览器中加载页面。捕获第一个请求中发送的所有标头。在java代码中使用相同的标头。您应该看到一些结果,但不是之前解释的完整结果。