Android Volley获取重定向网址

时间:2016-09-18 13:17:30

标签: android android-volley

我需要从Volley响应中获取重定向网址:在我的情况下,最后重定向的网址返回404,但我无法弄清楚如何从VolleyError获取网址。

1 个答案:

答案 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
     }