Java 从返回奇怪字符的URL读取数据
我试图通过java从json文件中获取数据。如果我使用浏览器导航到URL,所有内容都显示得很好,但是如果我尝试使用java获取数据,就会得到一堆无法解释或解析的字符。请注意,此代码适用于其他JSON文件。这可能是JSON文件创建方式的服务器端问题吗?我试着摆弄不同的角色集,但这似乎并没有解决问题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
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压缩,除非它在请求中被列为可接受的编码,所以这个网站不是很友好。我怀疑您的浏览器正在将其设置为已接受,这就是为什么您可以在那里看到它。只需将其设置为空值,并根据规范返回非编码响应,您的里程数可能会因此而有所不同