Чтобы добавить тело (body) к HTTP-запросу в Java, вам потребуется использовать стороннюю библиотеку, такую как Apache HttpClient или HttpURLConnection.
Ниже приведены примеры использования обеих библиотек для создания POST-запроса с телом:
1. Используя Apache HttpClient:
import java.net.URI; import org.apache.http.HttpEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpClientExample { public static void main(String[] args) { try (CloseableHttpClient httpclient = HttpClients.createDefault()) { HttpPost httppost = new HttpPost(new URI("http://example.com/api/endpoint")); // Установка заголовков httppost.setHeader("Content-Type", "application/json"); // Установка тела запроса String requestJson = "{"key":"value"}"; StringEntity requestEntity = new StringEntity(requestJson); httppost.setEntity(requestEntity); // Выполнение запроса и получение ответа CloseableHttpResponse response = httpclient.execute(httppost); try { HttpEntity responseEntity = response.getEntity(); if (responseEntity != null) { String responseString = EntityUtils.toString(responseEntity); System.out.println(responseString); } } finally { response.close(); } } catch (Exception e) { e.printStackTrace(); } } }
2. Используя HttpURLConnection:
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpURLConnectionExample { public static void main(String[] args) { try { URL url = new URL("http://example.com/api/endpoint"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // Установка метода запроса и других настроек connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); // Включение записи данных в тело запроса connection.setDoOutput(true); // Запись данных в тело запроса String requestJson = "{"key":"value"}"; DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); wr.writeBytes(requestJson); wr.flush(); wr.close(); // Получение ответа int responseCode = connection.getResponseCode(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String response; StringBuilder responseBuilder = new StringBuilder(); while ((response = in.readLine()) != null) { responseBuilder.append(response); } in.close(); System.out.println(responseBuilder.toString()); } catch (Exception e) { e.printStackTrace(); } } }
Оба этих примера позволяют создавать POST-запросы с заданным телом в виде JSON или других форматов данных. Вам нужно только заменить URL и тело запроса на свои собственные значения.