РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1096 of 1163 menu

Метод followRedirects

Метод followRedirects класса HttpClient устанавливает политику обработки перенаправлений (редиректов) для HTTP-запросов. В качестве параметра метод принимает значение перечисления HttpClient.Redirect, которое определяет, будет ли клиент автоматически следовать за ответами с кодами 3xx. Если политика не задана явно, по умолчанию используется значение Redirect.NEVER - перенаправления не выполняются. Метод возвращает объект HttpClient, что позволяет использовать цепочку вызовов.

Синтаксис

HttpClient client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.ALWAYS) .build();

Пример

Давайте создадим HTTP-клиент, который автоматически следует за перенаправлениями, и выполним запрос:

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 { HttpClient client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.ALWAYS) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://example.com")) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(response.statusCode()); } }

Результат выполнения кода:

200

Пример

Давайте создадим HTTP-клиент, который следует за перенаправлениями только внутри одного HTTP-протокола (с http на http или с https на https):

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 { HttpClient client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.NORMAL) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://example.com")) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(response.uri()); } }

Результат выполнения кода:

"http://example.com"

Пример

Давайте создадим HTTP-клиент, который никогда не следует за перенаправлениями, и получим код ответа 301 или 302:

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 { HttpClient client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://example.com")) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString() ); System.out.println(response.statusCode()); } }

Результат выполнения кода:

301

Смотрите также

  • класс HttpClient,
    который выполняет HTTP-запросы
  • метод followRedirects,
    который задает политику перенаправлений у Builder
  • метод send,
    который отправляет HTTP-запрос
  • метод sendAsync,
    который отправляет HTTP-запрос асинхронно
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить