我正在开发一款Android应用。在我的应用程序中,我正在使用Android连接到服务器。我正在使用Laravel作为服务器端。我的服务器端代码工作正常,因为我已经测试过了。问题是检查Volley的错误监听器中的错误状态代码。当我检查它时,状态代码始终为零,即使在我在浏览器中检查并使用其他工具时它正好返回401。
这是我的Volley请求返回从服务器抛出错误(401状态):
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("STATUS_CODE",CommonHelper.volleyResponseStatusCode(error));
if (CommonHelper.volleyResponseStatusCode(error) == 401) {
startActivity(new Intent(getActivity(), LoginActivity.class));
} else {
showMessageDialog("Server error encountered");
}
}
});
如您所见,我记录了状态代码。
这是我的CommonHelper类,其方法可以检查Volley状态代码
public final class CommonHelper {
.
.
.
public static int volleyResponseStatusCode(VolleyError error)
{
NetworkResponse networkResponse = error.networkResponse;
if (networkResponse != null) {
return networkResponse.statusCode;
}
else{
return 0;
}
}
}
每当我检查状态代码时,它总是返回0.这是为什么,以及如何以正确的方式检查它?
答案 0 :(得分:1)
我发现了该代码的问题。如果服务器返回500,400之类的统计信息,则会正确返回状态代码,除了401之外的其他状态。但是当服务器返回状态代码401时,网络响应始终为空。所以我只是考虑过,如果状态返回0,则等于401.这就是我用我的应用程序解决问题的方法。