2016-08-16 16 views
9

Có cách nào để nhận URL cuối cùng của yêu cầu không? Tôi biết rằng tôi có thể vô hiệu hóa chuyển hướng và chính điều này, nhưng có cách nào để lấy URL hiện tại tôi đang tải không? Giống như, nếu tôi yêu cầu a.com và được chuyển hướng đến b.com, có cách nào để lấy tên của url b.com không?Làm cách nào để nhận URL chuyển hướng OkHttp3?

Trả lời

14

Đối tượng phản hồi cung cấp một chuỗi các yêu cầu và phản hồi đã được sử dụng để lấy nó.

Để nhận URL cuối cùng, hãy gọi request() trên số Response cho số Request cuối cùng mà sau đó cung cấp url() bạn mong muốn.

Bạn có thể theo dõi toàn bộ chuỗi phản hồi bằng cách gọi priorResponse() và xem từng Response được liên kết Request.

-1

Các OkHttp.Builder có NetworkInterceptor provided.Here là một ví dụ:

 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

Các vấn đề liên quan