使用 Java 的 Web 内容与浏览器中的内容不同

发布于 2024-11-07 05:07:52 字数 1381 浏览 0 评论 0原文

我在从网络读取 BufferedReader 时遇到奇怪的问题。

这个URL 内容与粘贴的 Java 代码中的内容不同。 在使用 Java 第一个元素获取的内容中,浏览器中的结果为空,但事实并非如此。

我的代码:

public static void main(String[] args) {

    try {

        String url = "https://api.freebase.com/api/service/mqlread?queries={\"q1\":{\"query\":[{\"name\":\"Pulp Fiction\",\"*\":null,\"type\":\"/film/film\"}]},\"q3\":{\"query\":[{\"name\":\"Portal\",\"*\":null,\"type\":\"/cvg/computer_videogame\"}]}}";

        URL u = new URL(url);
        System.out.println(u.toString());
        URLConnection urlConn = u.openConnection();
        InputStreamReader is = new InputStreamReader(urlConn.getInputStream());
        BufferedReader br = new BufferedReader(is);
        String line = null;
        String data = "";

        while ((line = br.readLine()) != null) {
            data += line + "\n";
        }
        br.close();

        System.out.println(data);
    } catch (Exception ex) {
        System.err.println(ex);
    }
}

编辑:啊。想通了。 URL 中没有空格字符。只需将它们替换为 %20 即可。

I have strange problem with BufferedReader reading from web.

This URL content is different in browsers than in pasted Java code.
In content fetched using Java first elements result is empty in browser it is not.

My code:

public static void main(String[] args) {

    try {

        String url = "https://api.freebase.com/api/service/mqlread?queries={\"q1\":{\"query\":[{\"name\":\"Pulp Fiction\",\"*\":null,\"type\":\"/film/film\"}]},\"q3\":{\"query\":[{\"name\":\"Portal\",\"*\":null,\"type\":\"/cvg/computer_videogame\"}]}}";

        URL u = new URL(url);
        System.out.println(u.toString());
        URLConnection urlConn = u.openConnection();
        InputStreamReader is = new InputStreamReader(urlConn.getInputStream());
        BufferedReader br = new BufferedReader(is);
        String line = null;
        String data = "";

        while ((line = br.readLine()) != null) {
            data += line + "\n";
        }
        br.close();

        System.out.println(data);
    } catch (Exception ex) {
        System.err.println(ex);
    }
}

EDIT: Ahh. Figured it out. No space characters in URLs. Just replace them with %20.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文