2015-05-18 95 views
0

我已經查看了所有過去的堆棧溢出問題,而我似乎無法弄清楚這一點。Android:從URI獲取JSON

我想要做的是給一個uri並從中接收一個JSON。這是我到目前爲止的代碼:

public void setUpTheJSONs() throws IOException, JSONException, URISyntaxException { 
    jsonSummonerInfo = getJsonSummonerInfo(); 
    jsonSummonerRankedStats = getJsonRankedStats(); 
} 

public JSONObject getJsonSummonerInfo() throws IOException, JSONException, URISyntaxException { 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost("https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/kinoscorpia?api_key=my_api_key_here"); 
    HttpResponse response = httpClient.execute(httpPost); 
    HttpEntity entity = response.getEntity(); 

    if(entity != null){ 
     JSONObject temp = new JSONObject(EntityUtils.toString(entity)); 
     return temp; 
    } else { 
     return null; 
    } 

} 

} 

但是,我從來沒有得到迴應和響應= httpClient.execute(httpPost)線。

當您在網站中鍵入uri時,彈出JSON,但不會在代碼運行時彈出。

任何幫助?

感謝☺

+0

哪裏是你的'getJsonSummonerInfo()'方法執行?如果它在Activity或者Service中,你可能會得到一個NetworkOnMainThreadException異常。檢查logcat是否有例外。 – Squonk

+0

你的清單中是否有INTERNET權限? – josephus

+0

我建議你不要發佈你的api_key –

回答

0

隨着DroidParts

public JSONObject getJsonSummonerInfo(Context ctx) throws HTTPException { 
    return new RESTClient2(ctx).getJSONObject("https://na.api.pvp.net/api/lol/na/v1.3/stats/by-summoner/30170613/ranked?season=SEASON2015&api_key=(**MYAPIKEY**)"); 
} 
+0

我不認爲OP是在尋求替代方式做事 - 我想他可能想知道爲什麼他現有的代碼不起作用 – Squonk

0

代碼本身沒有問題。
也許鏈接被打破。
檢查鏈接拋出HTTP錯誤或由該URI
https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=stackoverflow

+0

我更新了代碼。我只是沒有從它得到一個JSON。但是,當我將uri放入網頁時,JSON彈出。我究竟做錯了什麼? –

+0

將'entity'和'response'打印到控制檯並檢查它,httpget可能是問題 – YukiNyaa

2

檢查代碼是否確定你的意思做一個POST請求?你的代碼似乎實際上並沒有發送任何東西到服務器,而在POST請求中你通常會附加一些東西給請求實體。

嘗試發送它作爲一個GET請求,看看是否能解決你的問題:

public JSONObject getJsonSummonerInfo() throws IOException, JSONException, URISyntaxException 
{ 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet("https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/kinoscorpia?api_key=my_api_key_here"); 

    HttpResponse response = httpClient.execute(httpGet); 
    HttpEntity entity = response.getEntity(); 

    if(entity != null) 
    { 
     JSONObject temp = new JSONObject(EntityUtils.toString(entity)); 
     return temp; 
    } 
    else 
    { 
     return null; 
    } 
} 
+0

同意,您需要使用HttpGet,此API的所有服務均爲GET –

+1

獲勝者!就是這樣,我只是對它進行了測試。只要他不試圖在主UI線程上運行它,它就會爲他工作。順便說一句,我編輯你的文章的唯一原因是刪除他的API密鑰。 –