如何处理Volley中的407错误代码

时间:2018-10-10 09:48:13

标签: android android-volley

我有一个RESTFul API,如果存在特定问题,它可能会以错误代码407进行响应,但是当我使用Volley时,它表明:

error.networkResponse = null
error.detailMessage = "java.net.ProtocolException: Received HTTP_PROXY_AUTH (407) code while not using proxy".

有没有一种方法可以使Volley在此变量error.networkResponse.statusCode中显示此错误?还是我必须在error.detailMessage中搜索407?

这是我的代码:

StringRequest request = new StringRequest(
            Request.Method.POST,
            url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    /*do something*/
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                    if(error != null && error.networkResponse != null) {
                        switch (error.networkResponse.statusCode) {
                            case 400:
                                /* print appropriate response */
                            case 407:
                                /* print appropriate response, 
                                   it won't reach here because 
                                   the error.networkResponse = null*/
                            default:

                        }
                    }
            }) {
        @Override
        public Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("id", String.format("%d", id));
            return params;
        }
    };

1 个答案:

答案 0 :(得分:1)

您似乎将Volley与OkHttp一起使用,因为该异常特定于OkHttp。

我自己没有使用OkHttp,所以我不知道这是否行得通,但是您可以尝试覆盖请求的parseNetworkResponse方法:

@NonNull
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
    int statusCode = response.statusCode;

    return super.parseNetworkResponse(response);
}