2016-09-18 12 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

その後戻ってクライアントに応答を送信するときに、あなたが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()をオーバライドすることができ、いくつかの要求を行うからヘッダを取得することができますヘッダにURLを追加するようにサーバーを設計します例えば

 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をリダイレクトしてヘッダに入れることができますか? –

関連する問題