2016-11-29 571 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部分

相關問題