我有一个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;
}
};
答案 0 :(得分:1)
您似乎将Volley与OkHttp一起使用,因为该异常特定于OkHttp。
我自己没有使用OkHttp,所以我不知道这是否行得通,但是您可以尝试覆盖请求的parseNetworkResponse
方法:
@NonNull
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
int statusCode = response.statusCode;
return super.parseNetworkResponse(response);
}