onSuccess(int,Header [],JSONObject)未被覆盖,但收到了回调

时间:2015-10-15 08:19:03

标签: android httphandler androidhttpclient asynchttpclient

我正在使用android-async-http,并覆盖所有onSuccessonFailure方法,但我收到了错误消息: onSuccess(int, Header[], JSONObject) was not overriden, but callback was received

cz.msebera.android.httpclient.client.HttpResponseException: Not Found

我只是想知道我真的覆盖了这个方法。 我也得到了日志:onSuccess JSONObject:{"error":null,"success":false}

  public static void querySecurityCode(String username) {
        RequestParams params = new RequestParams();
        params.put("username", username);
        VStarRestClient.getClient().setEnableRedirects(true);
        VStarRestClient.post(GET_SECURITY_CODE_URL, params, new JsonHttpResponseHandler(){
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                super.onSuccess(statusCode, headers, response);
                Log.i("ws", "---->>onSuccess JSONObject:" + response);
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
                super.onSuccess(statusCode, headers, response);
                Log.i("ws", "---->>onSuccess JSONArray");
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {
                super.onSuccess(statusCode, headers, responseString);
                Log.i("ws", "---->>onSuccess responseString");
            }


            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                super.onFailure(statusCode, headers, responseString, throwable);
                Log.i("ws", "---->>onFailure:" + throwable.toString());
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                super.onFailure(statusCode, headers, throwable, errorResponse);
                Log.i("ws", "---->>onFailure" + throwable.toString());
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONArray errorResponse) {
                super.onFailure(statusCode, headers, throwable, errorResponse);
                Log.i("ws", "---->>onFailure" + throwable.toString());
            }


        } );
    }

4 个答案:

答案 0 :(得分:6)

你不应该致电super.onFailuresuper.onSuccess,当你没有覆盖它们时,警告来自超级方法。

答案 1 :(得分:1)

我遇到了同样的问题。我的Rest API返回JSONObjects的数组,即JSONArray。但是我的代码尝试在JSONObjects中进行收集。

解决方案:下面的代码对我来说很好。 JsonHttpResponseHandler的Override方法

public void onSuccess(int statusCode,Header []标头, JSONArray响应 ){ }

而不是使用以下方法覆盖,该方法会导致错误: public void onSuccess(int statusCode,Header []标头, JSONObject响应){ }

答案 2 :(得分:0)

试试这一行

public void onSuccess(int statusCode, Header[] headers, JSONObject response) {

System.out.println("Received event with data: " + response);
}

答案 3 :(得分:0)

  

JsonHttpResponseHandler   有2种OnFailure覆盖方法。尝试另一个