Как бороться с кодом ошибки 407 в залпе - PullRequest
0 голосов
/ 10 октября 2018

У меня есть 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 голосов
/ 10 октября 2018

Вы, похоже, используете Volley с OkHttp, поскольку это исключение относится только к OkHttp.

Я не использую OkHttp сам, поэтому не знаю, будет ли это работать, но вы можете попробовать переопределитьparseNetworkResponse метод запроса:

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

    return super.parseNetworkResponse(response);
}
...