2016-08-16 449 views
9

有没有办法获得请求的最终网址?我知道我可以禁用重定向,并且我自己可以禁用,但是有没有办法获得我正在加载的当前URL?比如,如果我要求a.com并将其重定向到b.com,是否有办法获取url b.com的名称?如何获取OkHttp3重定向的URL?

回答

14

响应对象提供了一系列用于获取它的请求和响应。

为了获得最终的URL,呼吁Responserequest()的最后Request然后提供url()你的愿望。

您可以通过拨打priorResponse()并查看每个Response的关联Request来关注整个响应链。

-1

的OkHttp.Builder具有NetworkInterceptor provided.Here是一个例子:

 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