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

Отправка формы в Java

Когда данные нужно передать в теле, а не в адресе, используют метод с телом запроса. В построителе вместо GET вызывают POST с издателем HttpRequest.BodyPublishers.ofString.

Форма "application/x-www-form-urlencoded" - строка пар "ключ=значение" через "&". Тип задают заголовком "Content-Type". Сервис "/post" возвращает принятое тело в ответе:

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(); String payload = "sku=axle&count=3"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/post")) .header( "Content-Type", "application/x-www-form-urlencoded", ) .POST(HttpRequest.BodyPublishers.ofString(payload)) .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); System.out.println(response.body()); } }

Ответ читают так же строкой через BodyHandlers.ofString. Разбор структуры тела здесь не нужен - достаточно увидеть, что сервер получил те же поля:

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(); String payload = "note=ship&priority=low"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/post")) .header( "Content-Type", "application/x-www-form-urlencoded", ) .POST(HttpRequest.BodyPublishers.ofString(payload)) .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); System.out.println(response.statusCode()); System.out.println(response.body()); } }

Отправьте на "/post" форму с полями "user" равным "mia" и "role" равным "editor". Выведите тело ответа одной строкой.

Выведите код ответа и полное тело после отправки с одним полем "token" равным "demo" на "/post".

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