Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpHtRed 238 of 322 menu
◀ ▶

Переход по редиректу в Java

Сервер может ответить кодом перенаправления и новым адресом в заголовке. Поведение клиента задают при сборке HttpClient через followRedirects.

Режим Redirect.NEVER останавливается на первом ответе. Для "/redirect/1" код будет перенаправления, а не финальный успех:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws Exception { URI target = URI.create( "https://httpbin.org/redirect/1", ); HttpClient client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(target) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); System.out.println(response.statusCode()); } }

Режим Redirect.NORMAL следует по GET перенаправлениям и возвращает ответ конечного адреса. Тот же путь дает другой код:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws Exception { URI target = URI.create( "https://httpbin.org/redirect/1", ); HttpClient client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.NORMAL) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(target) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); System.out.println(response.statusCode()); } }

Выведите код ответа для "https://httpbin.org/redirect/1", если клиент не следует перенаправлениям.

Отправьте два чтения на тот же адрес: сначала без следования редиректу, затем с обычным режимом. Напечатайте оба кода через пробел.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить