Есть ли способ получить окончательный URL-адрес запроса? Я знаю, что я могу отключить перенаправления и сам по себе, но есть ли способ получить текущий URL-адрес, который я загружаю? Например, если я попросил a.com и получил перенаправление на b.com, есть ли способ получить имя url b.com?Как получить адрес перенаправления OkHttp3?
9
A
ответ
14
Объект ответа предоставляет цепочку запросов и ответов, которые были использованы для его получения.
Чтобы получить конечный URL, вызовите request()
на Response
для окончательного 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());