2016-08-16 29 views
9

Gibt es eine Möglichkeit, die endgültige URL einer Anfrage zu erhalten? Ich weiß, dass ich Umleitungen und das selbst deaktivieren kann, aber gibt es eine Möglichkeit, die aktuelle URL zu bekommen, die ich lade? Wie, wenn ich a.com anforderte und zu b.com umgeleitet wurde, gibt es eine Möglichkeit, den Namen der URL b.com zu bekommen?Wie bekomme ich OkHttp3 umgeleitete URL?

Antwort

14

Das Antwortobjekt stellt eine Kette der Anforderungen und Antworten bereit, die verwendet wurden, um es zu erhalten.

die endgültige URL zu erhalten, rufen Sie request() auf dem Response für die endgültige Request, die dann die url() Sie bietet wünschen.

Sie können die gesamte Antwortkette verfolgen, indem Sie priorResponse() anrufen und sich die einzelnen Response zugehörigen Request ansehen.

-1

Die OkHttp.Builder hat NetworkInterceptor provided.Here ist ein Beispiel:

 OkHttpClient httpClient = new OkHttpClient.Builder() 
      .addNetworkInterceptor(new Interceptor() { 
       @Override 
       public Response intercept(Chain chain) throws IOException { 
        System.out.println("url: " + chain.request().url()); 
        return chain.proceed(chain.request()); 
       } 
      }) 
      .build(); 
    System.out.println(httpClient.newCall(new Request.Builder().url("http://google.com").build()).execute()); 

OkHttp3 wiki: Interceptors