Метод send
Метод send класса HttpClient синхронно
отправляет HTTP-запрос на сервер и возвращает
ответ HttpResponse. В первый параметр мы
передаем объект запроса HttpRequest,
во второй - обработчик тела ответа
HttpResponse.BodyHandler. Метод блокирует
выполнение потока до получения ответа от сервера.
Если во время выполнения возникает ошибка
ввода-вывода, выбрасывается исключение
IOException, а при прерывании потока -
InterruptedException.
Синтаксис
client.send(request, responseBodyHandler)
Пример
Давайте отправим GET-запрос и получим тело ответа в виде строки:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.io.IOException;
public class Main
{
public static void main(String[] args) throws IOException, InterruptedException
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Результат выполнения кода:
200
"<!doctype html>..."
Пример
Давайте отправим POST-запрос с телом и получим только статус ответа:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.io.IOException;
public class Main
{
public static void main(String[] args) throws IOException, InterruptedException
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.header("Content-Type", "text/plain")
.POST(HttpRequest.BodyPublishers.ofString("abcde"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
}
}
Результат выполнения кода:
200
Смотрите также
-
класс
HttpClient,
который отправляет HTTP-запросы -
метод
sendAsync,
который отправляет запрос асинхронно -
класс
HttpRequest,
который представляет HTTP-запрос -
класс
HttpResponse,
который представляет HTTP-ответ