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

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

Сервер может ответить кодом перенаправления и новым адресом в заголовке. Поведение клиента задают при сборке 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 fun main() { val target = URI.create( "https://httpbin.org/redirect/1", ) val client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.NEVER) .build() val request = HttpRequest.newBuilder() .uri(target) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) 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 fun main() { val target = URI.create( "https://httpbin.org/redirect/1", ) val client = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.NORMAL) .build() val request = HttpRequest.newBuilder() .uri(target) .GET() .build() val response = client.send( request, HttpResponse.BodyHandlers.ofString(), ) println(response.statusCode()) }

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

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

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