检查Volley错误监听器中的状态代码在Android中不起作用

时间:2016-04-18 11:46:46

标签: android android-volley

我正在开发一款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.这是为什么,以及如何以正确的方式检查它?

1 个答案:

答案 0 :(得分:1)

我发现了该代码的问题。如果服务器返回500,400之类的统计信息,则会正确返回状态代码,除了401之外的其他状态。但是当服务器返回状态代码401时,网络响应始终为空。所以我只是考虑过,如果状态返回0,则等于401.这就是我用我的应用程序解决问题的方法。