java - URL 请求没有返回数据 - Java
问题描述
当我运行这个 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。有人可以解释这里发生了什么吗?
谢谢
解决方案
您在浏览器中看到的是多次调用服务器的结果。在第一次调用中,顶层 html 被加载。浏览器解析相同的内容并多次调用服务器以获取其他资源,如 js、css、图像等。
应用了js、css等。这反过来可能会导致从服务器加载更多数据并更新 html。因此,您在浏览器上看到的是多次调用的结果。我假设您不打算编写浏览器实现。
这解释了为什么您会在 stackoverflow.com 的情况下看到部分结果。你只是得到准系统 html 页面。
现在对于 microsoft.com,尝试在浏览器中加载页面。捕获在第一个请求中发送的所有标头。在您的 java 代码中使用相同的标头。您应该看到一些结果,但不是前面解释的完整结果。
推荐阅读
- python - 数据框中每个列表列表的唯一标识符
- c - 使用 if-else 对 3 个值进行排序的最有效的 c 程序是什么?
- qt - Qt 5.8 使用 std::chrono 编译问题
- raspberry-pi - Android Things Console 中的生产下载选项存在问题
- azure-devops - 如何删除错误创建的 Azure DevOps 帐户?
- ios - 不支持从扩展覆盖非@objc 声明
- r - 尝试注意一列中的值是否等于每行下一列中的值
- c++ - 从 'const char*' 到 'char*' [-fpermissive] 的无效转换;VTK-7.1.1 编译错误
- jquery - 多个表单同一个页面只提交一个ajax
- java - java opencv中的Smoothstep函数