Java 如何获得OkHttp3重定向URL?

Java 如何获得OkHttp3重定向URL?,java,android,networking,okhttp,okhttp3,Java,Android,Networking,Okhttp,Okhttp3,有没有办法获取请求的最终URL?我知道我可以禁用重定向,也可以自己禁用重定向,但是有没有办法获取我正在加载的当前URL?比如,如果我请求a.com并被重定向到b.com,是否有办法获取url b.com的名称?响应对象提供了一系列用于获取它的请求和响应 要获取最终URL,请调用响应,以获取最终的请求,然后该请求将提供所需的URL 通过调用并查看每个响应的相关请求OkHttp.Builder提供了NetworkInterceptor,您可以跟踪整个响应链。以下是一个示例: OkHt

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

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

要获取最终URL,请调用
响应
,以获取最终的
请求
,然后该请求将提供所需的URL


通过调用并查看每个
响应
的相关
请求

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

您可以使用响应标题中的“位置”(请参阅主题)。例如:

{
{
    okHttpClient = new OkHttpClient.Builder()
        .addNetworkInterceptor(new LoggingInterceptor())
        .build();
}

private class LoggingInterceptor implements Interceptor {
    @Override public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Response response = chain.proceed(request);

        utils.log("LoggingInterceptor", "isRedirect=" + response.isRedirect());
        utils.log("LoggingInterceptor", "responseCode=" + response.code());
        utils.log("LoggingInterceptor", "redirectUri=" + response.header("Location"));

        return response;
    }
}