首页 > 解决方案 > 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。有人可以解释这里发生了什么吗?

谢谢

标签: javahtmlurl

解决方案


您在浏览器中看到的是多次调用服务器的结果。在第一次调用中,顶层 html 被加载。浏览器解析相同的内容并多次调用服务器以获取其他资源,如 js、css、图像等。

应用了js、css等。这反过来可能会导致从服务器加载更多数据并更新 html。因此,您在浏览器上看到的是多次调用的结果。我假设您不打算编写浏览器实现。

这解释了为什么您会在 stackoverflow.com 的情况下看到部分结果。你只是得到准系统 html 页面。

现在对于 microsoft.com,尝试在浏览器中加载页面。捕获在第一个请求中发送的所有标头。在您的 java 代码中使用相同的标头。您应该看到一些结果,但不是前面解释的完整结果。


推荐阅读