Gson gson = new Gson();
JsonReader reader = new JsonReader(new InputStreamReader(
new URL("http://api.mineplex.com/pc/player/abc?apiKey=1")
.openConnection().getInputStream()));
JsonElement json1 = gson.fromJson(reader, JsonElement.class);
JsonObject jsonObject1 = json1.getAsJsonObject();
这个类崩溃了:
Caused by: java.lang.IllegalStateException: Not a JSON Object: "<html>"
at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:90) ~[gson-2.2.4.jar:?]
为什么?
答案 0 :(得分:1)
答案 1 :(得分:1)
这就是你的回复:
<html>
<head></head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;">{"statusCode":401,"error":"Unauthorized","message":"Invalid API Key. To get an api key use the /api command in game"}</pre>
</body>
</html>
除了这个页面包含一个JSON,它不是一个。您应该寻找API文档直接返回json,或者在Java中操作此HTML并仅获取JSON部分
答案 2 :(得分:1)
您使用的链接redirecting
到实际页面,该页面从HTTP
重定向到HTTPS
协议,
问题是由Sun JRE中实施的HTTP / HTTPS重定向策略引起的。
即使浏览器足够宽容以执行此重定向,但出于安全原因,Java不会为您执行此操作。在您的情况下,您只需使用HTTPS
协议即可删除任何重定向。