2015-06-01 3 views
0

У меня проблема с AsyncHttpClient, потому что он в некоторых случаях отвечает, а в некоторых случаях и нет. Когда я запускаю эту функцию ниже, я не получаю никаких данных и в LogCat Я вижу следующий Warining:AsyncHttpClient не отвечает в некоторых случаях

JsonHttpResponseHandler﹕ onSuccess(int, Header[], JSONArray) was not overriden, but callback was received 

Вот код из моих функций:

private void getTreningPlan() { 
     RequestParams params = new RequestParams(); 
     params.put("userId", user.getUserId()); 
     invokeWS(params); 
    } 

    private void invokeWS(RequestParams params) { 
     AsyncHttpClient client = new AsyncHttpClient(); 
     client.get("http://" + Constants.address + ":" + Constants.port + "/silownia_java/rest/plan/plansByID", params, new JsonHttpResponseHandler() { 
      @Override 
      public void onSuccess(int statusCode, Header[] headers, JSONObject obj) { 
       Log.i("TAG", "HERE"); 
       try { 

        TrainingPlan trainingPlan = new TrainingPlan(); 
        ArrayList<TrainingDay> trainingDayArrayList = new ArrayList<TrainingDay>(); 

        JSONArray trainingDays = obj.getJSONArray("trainingDays"); 

        (...............) 

       } catch (Exception e) { 
        Toast.makeText(getActivity(), "Niepoprawna odpowiedź serwera", Toast.LENGTH_LONG).show(); 
       } 
      } 

      @Override 
      public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { 
       if (statusCode == 404) { 
        Toast.makeText(getActivity(), "404 - Nie odnaleziono serwera!", Toast.LENGTH_LONG).show(); 
       } else if (statusCode == 500) { 
        Toast.makeText(getActivity(), "500 - Coś poszło nie tak po stronie serwera!", Toast.LENGTH_LONG).show(); 
       } else { 
        Toast.makeText(getActivity(), throwable.toString(), Toast.LENGTH_LONG).show(); 
        Log.i(TAG, throwable.toString()); 
       } 
      } 
     }); 
    } 

Я не идея, почему это происходит, потому что я использую AsyncHttpClient в некоторых случаях в моем проекте, и он всегда ведет себя хорошо. Я могу добавить, что мое приложение имеет подключение к моему серверу, а на стороне сервера этот HTTP отвечает хорошо.

ответ

1

Это работает, когда ответ HTTP является JSONObject, но когда ответ JSONArray, тогда он дает эту проблему. Убедитесь в том, чтобы вернуть JSONObject, если вы используете

@Override 
    public void onSuccess(int statusCode, Header[] headers, JSONObject obj) { 
} 

/////////////////////////////////// //////////////////////////////// при возврате JSON массив, то

@Override 
    public void onSuccess(int statusCode, Header[] headers, JSONArray jsonArray) { 
} 
+0

EDIT: Да, это работает ,. Спасибо! :) – user3448282

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