如何获取OkHttp3重定向的URL?

Gat*_*ito 12 java networking android okhttp okhttp3

有没有办法获取请求的最终URL?我知道我可以自己禁用重定向,但有没有办法获取我正在加载的当前URL?就像,如果我要求a.com并被重定向到b.com,有没有办法获得url b.com的名称?

Jak*_*ton 22

响应对象提供了用于获取它的请求和响应链.

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

您可以通过调用priorResponse()并查看每个Response相关链来跟踪整个响应链Request.


小智 5

OkHttp.Builder提供了NetworkInterceptor。下面是一个例子:

        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());
Run Code Online (Sandbox Code Playgroud)

OkHttp3 维基:拦截器