Метод POST
Метод POST класса HttpRequest.Builder
создает и возвращает новый построитель
HttpRequest.Builder, в котором уже установлен
HTTP-метод POST и тело запроса. В первом параметре
мы передаем тело запроса в виде объекта
HttpRequest.BodyPublisher. Тело можно создать
с помощью класса HttpRequest.BodyPublishers,
например, методом ofString для отправки
строки или ofFile для отправки файла.
Метод возвращает построитель, поэтому вызовы можно
выстраивать в цепочку, добавляя URI, заголовки
и таймаут.
Синтаксис
builder.POST(bodyPublisher)
Пример
Давайте создадим POST-запрос с телом в виде строки и выведем его метод и URI:
import java.net.URI;
import java.net.http.HttpRequest;
public class Main
{
public static void main(String[] args)
{
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/api"))
.POST(HttpRequest.BodyPublishers.ofString("abcde"))
.build();
System.out.println(request.method());
System.out.println(request.uri());
}
}
Результат выполнения кода:
"POST"
"https://example.com/api"
Пример
Давайте отправим POST-запрос с телом и заголовком
Content-Type и выведем тело ответа:
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.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/api"))
.header("Content-Type", "text/plain")
.POST(HttpRequest.BodyPublishers.ofString("12345"))
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Результат выполнения кода:
200
"response body"
Пример
Давайте создадим POST-запрос без тела с помощью
метода noBody:
import java.net.URI;
import java.net.http.HttpRequest;
public class Main
{
public static void main(String[] args)
{
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/api"))
.POST(HttpRequest.BodyPublishers.noBody())
.build();
System.out.println(request.method());
}
}
Результат выполнения кода:
"POST"
Смотрите также
-
класс
HttpRequest.Builder,
который создает HTTP-запросы -
метод
GET,
который создает GET-запрос -
метод
header,
который добавляет заголовок запроса -
метод
ofString,
который создает тело запроса из строки