GSON - JsonElement到JSONObject的转换错误
问题描述:
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();
该类崩溃,这样的:GSON - JsonElement到JSONObject的转换错误
Caused by: java.lang.IllegalStateException: Not a JSON Object: "<html>"
at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:90) ~[gson-2.2.4.jar:?]
为什么?
答
您正在使用的链接是redirecting
到其重定向从HTTP
到HTTPS
协议实际的页面,
的问题是由太阳JRE实现
即使如此,浏览器有足够的宽容做到这一点重定向的HTTP/HTTPS重定向策略造成的,Java不为你做的为了安全起见,你的情况,你可以只需使用HTTPS
协议删除任何重定向。
答
好像你正在阅读一个HTML内容的网页不是一个JSON资源
检查一下这个网址的回报:
http://api.mineplex.com/pc/player/abc?apiKey=1
并验证内容类型应该是JSON
答
这是什么您的电话正在退回:
<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,它不是一个。你shoulde查找API文档直接返回一个JSON或操纵该HTML Java和只得到JSON部分
我在猜测,但尝试更改“http”与“https”。 – Tobb
@Tobb https提供证书错误。 – MCCCS
@MCCCS你正在使用的链接正在重定向到实际页面,尽管浏览器足以让你做到从http重定向到https Java不会为你做到这一点,你可以考虑使用https而不是http协议 – nafas