Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从返回奇怪字符的URL读取数据_Java_Json_Url - Fatal编程技术网

Java 从返回奇怪字符的URL读取数据

Java 从返回奇怪字符的URL读取数据,java,json,url,Java,Json,Url,我试图通过java从json文件中获取数据。如果我使用浏览器导航到URL,所有内容都显示得很好,但是如果我尝试使用java获取数据,就会得到一堆无法解释或解析的字符。请注意,此代码适用于其他JSON文件。这可能是JSON文件创建方式的服务器端问题吗?我试着摆弄不同的角色集,但这似乎并没有解决问题 public static void main(String[] args) throws Exception { URL url = new URL("http://www.minecraft

我试图通过java从json文件中获取数据。如果我使用浏览器导航到URL,所有内容都显示得很好,但是如果我尝试使用java获取数据,就会得到一堆无法解释或解析的字符。请注意,此代码适用于其他JSON文件。这可能是JSON文件创建方式的服务器端问题吗?我试着摆弄不同的角色集,但这似乎并没有解决问题

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.minecraftpvp.com/api/ping.json");
    URLConnection connection = url.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    boolean hasLine = true;
    while (hasLine) {
        String line = in.readLine();
        if (line != null) {
            System.out.println(line);
        } else {
            hasLine = false;
        }
    }
}
我从中得到的输出只是一堆毫无意义的奇怪字符。如果我把url改成像google.com这样的东西,它就可以正常工作了


编辑:似乎已经回答了我的问题。在我要求确认答案不在这里并且找不到任何东西之前,我试着搜索了一下。我想我看得不够仔细。

您需要检查
内容编码
标题。有问题的URL不正确地返回gzip压缩内容,即使您没有要求它,您也需要通过解码器运行它。

是的,默认情况下URL返回的是gzip编码的内容

您可以执行以下三项操作之一:

  • 在请求中显式设置
    接受编码:
    头。web服务不应该返回gzip压缩,除非它在请求中被列为可接受的编码,所以这个网站不是很友好。我怀疑您的浏览器正在将其设置为已接受,这就是为什么您可以在那里看到它。只需将其设置为空值,并根据规范返回非编码响应,您的里程数可能会因此而有所不同

  • 或者使用本文中显示如何解压缩响应的答案。这应该是比#1更好的选择

  • 和/或要求托管服务的人员实施建议的方案,该方案仅在客户表示能够处理或能够从浏览器指纹高度自信地推断出的情况下提供压缩响应

  • 祝你好运