2013-11-24 6 views
0

Я пытался создать приложение для Android с сервером heroku в качестве бэкэнд. Я пытаюсь получить данные JSON как строку через URL-адрес heroku.Android HTTP-клиент Throwing exception

Вот ссылка на JSon строку

http://le-wild-pesit.herokuapp.com/peeps/

и содержимое URL является

[{ "писк": { "возраст": нулевой, "created_at": "2013-11-23T08: 58: 09Z", "идентификатор": 1, "название": NULL, "updated_at": "2013-11-23T08: 58: 09Z"}}, { "пип" : { "возраст": нулевой, "created_at": "2013-11-23T08: 59: 30z", "идентификатор": 2, "имя": нулевой, "updated_at": "2013-11-23T08: 59: 30z "}}]

Вот мой код:

//imports go here 
public class JSONParser 
{ 

public String getJSONFromUrl(String url) 
{ 

    InputStream inpstr = null; 
    String result = ""; 
    HttpResponse response = null; 

    // HTTP 
    try , 
    {   
     HttpClient httpclient = new DefaultHttpClient(); 
     try 
     { 
      response = httpclient.execute(new HttpGet(url)); 
      } 
     catch(Exception e) 
     { 
      return "dafuq?!"; 
     } 
     HttpEntity entity = response.getEntity(); 
     inpstr = entity.getContent(); 
    } 
    catch(Exception e) 
    { 
     return "SHIT!"; 
    } 

    // Code to get string from input stream 

return result; 

} 

} 

Когда я запускаю этот код, Ответный я получаю

"dafuq ?!"

Так я предполагаю, что у меня есть проблемы с

ответ = httpclient.execute (новый HttpGet (URL));

Я занимаюсь кодом с 2-х дней, и мне не удалось выяснить, что случилось. Пожалуйста, помогите мне.

Спасибо!

+0

Пожалуйста, отправьте сообщение logcat, иначе вам будет сложно помочь. –

+0

@CompuChip Вы были правы. Я пропустил разрешение ИНТЕРНЕТ. Это все фиксировало. Благодаря! –

ответ

1

Пожалуйста, убедитесь, что вы предоставили INTERNET разрешение приложения, см this SO question о том, как сделать это.

В качестве примечания, я бы порекомендовал добавить еще несколько описательных сообщений об ошибках в ваш код, например, посмотреть на e.getMessage().

1

Прежде всего, работа в сети должна выполняться асинхронно, для этого используйте AsyncTask. Во-вторых, я рекомендую использовать функцию Log для обработки ошибок. А вот рабочий код (getJSON() является функцией ввода):

public void getJSON() { 
    String[] strings = new String[]{"http://le-wild-pesit.herokuapp.com/peeps/"}; 
    new AsyncJSONTask().execute(strings); 
} 


public JSONArray getJSONFromUrl(String url) { 
    String resultString; 
    HttpResponse response; 
    JSONArray jsonArray = null; 
    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     response = httpclient.execute(new HttpGet(url)); 
     HttpEntity entity = response.getEntity(); 
     resultString = EntityUtils.toString(entity); 
     jsonArray = new JSONArray(resultString); 
    } catch (Exception e) { 
     Log.e("SOME_TAG", Log.getStackTraceString(e)); 
    } 
    return jsonArray; 
} 

private class AsyncJSONTask extends AsyncTask<String, Void, JSONArray> { 

    @Override 
    protected JSONArray doInBackground(String... params) { 
     String url = params[0]; 
     return getJSONFromUrl(url); 
    } 

    @Override 
    protected void onPostExecute(JSONArray jsonArray) { 
     super.onPostExecute(jsonArray); 
     //Here you do your work with JSON 
    } 
}