我正在使用android-async-http,并覆盖所有onSuccess
和onFailure
方法,但我收到了错误消息:
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());
}
} );
}
答案 0 :(得分:6)
你不应该致电super.onFailure
和super.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
覆盖方法。尝试另一个