Код статуса ответа в Java
Первая строка ответа сервера содержит код состояния -
трехзначное число. Клиент JDK кладет его в
HttpResponse.statusCode. Тело при этом
может быть пустым, но код все равно доступен.
Сервис httpbin.org умеет отвечать с заданным
кодом по пути "/status/201". Так проверяют,
что программа видит не только 200:
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().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/status/201"))
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
);
System.out.println(response.statusCode());
}
}
Обработчик ofString здесь нужен лишь как
аргумент send: тело для 201 часто
пустое, а код уже известен до его разбора:
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().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/status/201"))
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
);
System.out.println(response.statusCode());
System.out.println(response.body().isEmpty());
}
}
Выведите код ответа для
"https://httpbin.org/status/404".
Отправьте запрос на
"https://httpbin.org/status/204" и
напечатайте код и признак пустого тела через
пробел.