2013-08-13 18 views
7

Używam Square Retrofit Client, aby wysyłać proste żądania z aplikacji na Androida. Tak jak poniżej:Klient Square Retrofit: Jak włączyć/wyłączyć followRedirects? Jak przechwycić przekierowanie?

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); 

Jeden punkt końcowy przekierowuje do innego adresu URL (s3). Z przyczyn nieistotnych dla tego pytania żądanie przekierowania kończy się niepowodzeniem i dlatego wywoływana jest moja metoda callback.failure(error). Muszę mieć możliwość uzyskania dostępu i modyfikowania przekierowania lub żądania w pewnym momencie, najlepiej w callback.failure(). Jak mogę to zrobić?

Czy istnieje sposób ustawienia czegoś podobnego do followRedirects = false (i przechwycenia przekierowania w ten sposób)?

Odpowiedz

5

Z OkHttp:

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

Z HttpURLConnection:

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

patrz dyskusja here.