2016-05-31 3 views
0

Ich habe eine verkleinerte URL erhalten umleiten und ich möchte die endgültige URLRetrofit2 Wie url @HEAD ("/")

Mit Retrofit 1,9 bis habe ich verwendet, um dies zu tun:

@HEAD("/XXXXXXXXX") 
void fetchFinalUrl(Callback<String> cb); 


public void getUrl() { 
    mMinifyService.fetchFinalUrl(new Callback<String>() { 
       @Override 
       public void success(String s, Response response) { 
        response.getUrl(); 
       } 
       [...] 
} 

Aber Jetzt mit Retrofit 2 .getUrl() existieren keine Ideen wie man das macht?

Vielen Dank im Voraus.

EDIT

Schließlich haben es!

public class ApiProvider<T> { 

    private Retrofit retrofit; 
    private static final String END_POINT_MINIFY = "XXXXXXX"; 

    public ApiProvider() { 
     initAdapter(); 
    } 

    public T getService(Class<T> service) { 
     return retrofit.create(service); 
    } 

    private void initAdapter() { 
     HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); 
     interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
     OkHttpClient client = new OkHttpClient.Builder() 
       .addInterceptor(interceptor) 
       .followRedirects(false) 
       .build(); 

     retrofit = new Retrofit.Builder() 
       .baseUrl(END_POINT_MINIFY) 
       .addConverterFactory(new ToStringConverterFactory()) 
       .client(client) 
       .build(); 
    } 

} 

public interface IMinifyService { 
    @HEAD("/XXXXXXXXX") 
    Call<Void> fetchFinalUrl(Callback<String> cb); 
} 


public class MinifyServiceImpl { 

    private ApiProvider<IMinifyService> mApiProvider = new ApiProvider<>(); 
    private IMinifyService mMinifyService = mApiProvider.getService(IMinifyService.class); 

    public Promiser<String, Integer> fetchMinifyUrl() { 
     return new Promiser<>((resolve, reject) -> mMinifyService.fetchMinifyUrl().enqueue(new Callback<Void>() { 
      @Override 
      public void onResponse(Call<Void> call, Response<Void> response) { 
       if (response.code() >= 300 && response.code() < 400){ 
        resole.run(response.headers().get("Location")); 
       } else { 
        reject.run(response.code()); 
       } 
      } 

      @Override 
      public void onFailure(Call<Void> call, Throwable t) { 
       reject.run(t.hashCode()); 
      } 
     })); 
    } 

} 

wenn Sie wollen Promizer verwenden ->Click here

Antwort

1
response.raw().request().url() 
+1

Wenn ich das tue habe ich die minimierte URL und nicht die endgültige url: / – Nodens