我需要从Volley响应中获取重定向网址:在我的情况下,最后重定向的网址返回404,但我无法弄清楚如何从VolleyError
获取网址。
答案 0 :(得分:0)
设计服务器以便在将响应发送回客户端时在标头中添加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
}