2016-11-29 564 views
-2
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:?] 

为什么?

+0

我在猜测,但尝试更改“http”与“https”。 – Tobb

+0

@Tobb https提供证书错误。 – MCCCS

+0

@MCCCS你正在使用的链接正在重定向到实际页面,尽管浏览器足以让你做到从http重定向到https Java不会为你做到这一点,你可以考虑使用https而不是http协议 – nafas

回答

1

您正在使用的链接是redirecting到其重定向从HTTPHTTPS协议实际的页面,

的问题是由太阳JRE实现

即使如此,浏览器有足够的宽容做到这一点重定向的HTTP/HTTPS重定向策略造成的,Java不为你做的为了安全起见,你的情况,你可以只需使用HTTPS协议删除任何重定向。

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,它不是一个。你shoulde查找API文档直接返回一个JSON或操纵该HTML Java和只得到JSON部分

相关问题