将您的服务器设计为在将响应发送回客户端时在标头中添加 URL,之后您可以从 VolleyError 获取标头
NetworkResponse response = volleyError.networkResponse;
if (response != null && response.data != null) {
Map<String, String> headers = response.headers;
String URL = headers.get("my_url_key");
}
或者,每次您执行某些请求时,您都可以覆盖 getHeaders(),例如
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET,
createURL(), null, success, errorListener) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> header = new HashMap<>();
header.put("my_url_key", "http://mywebsite.com");
return header;
}
};
检索与上面的代码相同,但更方便,因为您不再需要在服务器上进行任何更改。
如果您想根据响应代码执行重定向,您可以执行以下操作:
NetworkResponse response = volleyError.networkResponse;
if (response != null && response.data != null) {
if(response.statusCode == 404){
// Do something here
}
}
希望服务器将重定向 URL 与二进制响应一起包含。
例如。
NetworkResponse response = volleyError.networkResponse;
if (response != null && response.data != null) {
JSONObject o = new JSONObject(new String(response.data));
// get the info here
}