Как добавить body к http request’u в java?

Чтобы добавить тело (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 и тело запроса на свои собственные значения.