当验证错误时,AsyncHttpClient onFailure方法不会显示Toast

时间:2017-10-14 18:30:33

标签: android

使用AsyncHttpClient我通过Android设备发送简单的GET请求到我的服务器。我的服务器需要身份验证。当我传递正确的登录名和密码时,它会显示应显示的内容。此外,当身份验证正确但我的数据库中没有这样的值并且返回404时,它会显示TOAST。此代码如下所示:

@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {

    if (statusCode == 401) {
        Toast.makeText(getActivity(), "Wrong authentication", Toast.LENGTH_SHORT).show();
    }
    else if (statusCode == 404) {
        Toast.makeText(getActivity(), "No content", Toast.LENGTH_SHORT).show();
    }
    else if (statusCode == 500) {
        Toast.makeText(getActivity(), "There's something wrong with a server!", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(getActivity(), throwable.toString(), Toast.LENGTH_SHORT).show();
    }
}

如您所见,我还想在身份验证错误时显示TOAST。但是,当返回401状态代码时,TOAST不会显示。这是android studio中的例外:

W/JsonHttpRH: onFailure(int, Header[], String, Throwable) was not overriden, but callback was received
              cz.msebera.android.httpclient.client.HttpResponseException: UNAUTHORIZED
                  at com.loopj.android.http.AsyncHttpResponseHandler.sendResponseMessage(AsyncHttpResponseHandler.java:446)
                  at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:160)
                  at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:177)
                  at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:106)
                  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
                  at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                  at java.lang.Thread.run(Thread.java:818)

可能导致此问题的原因是什么?感谢

编辑:

以下是内容“未找到”但授权正确的日志。不幸的是,没有出现以下日志。顺便说一下,我的TOAST没有出现在我的申请表中......

Log.d("Failed: ", "" + statusCode);
Log.d("Error : ", "" + throwable);

enter image description here

以下是授权错误时的日志。出现以下日志。顺便说一句,我的TOAST也出现在我的应用程序中......

Log.d("Failed: ", "" + statusCode);
Log.d("Error : ", "" + throwable);

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试按照正确的方法覆盖,

@Override
 public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
        super.onFailure(statusCode, headers, responseString, throwable);
        Log.d("Failed: ", ""+statusCode);
        Log.d("Error : ", "" + throwable);
    }