如何获取OkHttp3重定向的URL?

2022-09-02 23:33:42

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


答案 1

响应对象提供用于获取响应的请求和响应的链。

要获取最终 URL,请在 上调用 request() 以获取最终 URL,然后提供所需的 url()。ResponseRequest

您可以通过调用 priorResponse() 并查看每个 关联的 响应链来跟踪整个响应链。ResponseRequest


答案 2

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());

OkHttp3 wiki: Interceptors


推荐