2015-05-18 4 views
0

Я просмотрел все прошлые вопросы переполнения стека, и я просто не могу понять это.Android: Получение JSON из ури

То, что я хочу сделать, это дать ури и получить от него 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()' метод выполняется? Если он находится в теле «Активность» или «Сервис», вы можете получить «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? Ваш код, по-видимому, ничего не посылает на сервер, кроме URL-адреса, где в запросе 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

Победитель! Вот и все, я просто проверил это. Он будет работать для него, пока он не пытается запустить это в основном потоке пользовательского интерфейса. Кстати, единственная причина, по которой я отредактировал ваш пост, - удалить его ключ API. –

Смежные вопросы