2013-08-13 7 views
7

Ich bin mit Retrofit-Client Platz einfache Anfragen von einem Android-App zu machen. Wie folgt:Square Retrofit Client: Wie können FollowRedirects aktiviert/deaktiviert werden? Wie kann ich die Weiterleitungs-URL abfangen?

RestAdapter restAdapter = new RestAdapter.Builder() 
      .setServer(Configurations.getInstance().plistMap.get("PTBaseURL")) 
      .setRequestHeaders(new RequestHeaders() { 
       @Override 
       public List<Header> get() { 
        List<Header> headers = new ArrayList<Header>(); 
         Header authHeader = new Header("Authorization", authType + " " + UserManager.getInstance().currentUser.token); 
         headers.add(authHeader); 
        } 
        return headers; 
       } 
      }) 
      .build(); 

    this.service = restAdapter.create(ClientInterface.class); 

Ein Endpunkt leitet zu einer anderen URL (s3) um. Aus einem Grund, der für diese Frage nicht wichtig ist, schlägt die Redirect-Anfrage fehl und somit wird meine callback.failure(error) Methode aufgerufen. Ich muss in der Lage sein, auf die Weiterleitungs-URL oder die Anfrage zu einem bestimmten Zeitpunkt zuzugreifen und sie zu ändern, vorzugsweise in callback.failure(). Wie kann ich das machen?

Alternativ gibt es eine Möglichkeit, etwas wie followRedirects = false einzustellen (und die Umleitung auf diese Weise abzufangen)?

Antwort

5

Mit OkHttp:

public static void setFollowRedirects (boolean auto) 
public OkHttpClient setFollowProtocolRedirects(boolean followProtocolRedirects) 

Mit HttpURLConnection:

public static void setFollowRedirects (boolean auto) 
public void setInstanceFollowRedirects (boolean followRedirects) 

Siehe Diskussion here.