在某些情况下,AsyncHttpClient不响应

时间:2015-06-01 14:27:12

标签: java android

我遇到了 AsyncHttpClient 的问题,因为它在某些情况下会响应,在某些情况下也不会。当我在下面运行这个函数时,我没有数据,并且在 logcat 中我可以看到以下Warining:

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 个答案:

答案 0 :(得分: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) {
 }