使用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);
以下是授权错误时的日志。出现以下日志。顺便说一句,我的TOAST也出现在我的应用程序中......
Log.d("Failed: ", "" + statusCode);
Log.d("Error : ", "" + throwable);
答案 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);
}