2016-09-18 36 views
0

我需要從Volley響應中獲取重定向url:在我的情況中,最後一次重定向url返回404,但我無法弄清楚如何從VolleyError獲取url。Android Volley獲取重定向url

+0

看到http://stackoverflow.com/questions/32630993/android-volleyerror-retrieve-requested-url volleyerror對象 –

+0

檢查從Web服務的響應頭,看它是否具有「位置」值或不?你可以嘗試使用郵遞員等工具嗎? – BNK

回答

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。

Ex。

NetworkResponse response = volleyError.networkResponse; 

    if (response != null && response.data != null) { 
      JSONObject o = new JSONObject(new String(response.data)); 
      // get the info here 
    } 
+0

我無法更改服務器 –

+0

@konopko我更新了我的答案。 – Enzokie

+0

我喜歡這種方式,但是我怎樣才能獲得重定向的url並將其放到標題中? –