[java] HttpClient를 사용하여 JSON 데이터를 POST 요청으로 전송하는 방법은?

Java에서 HttpClient를 사용하여 JSON 데이터를 POST 요청으로 전송하는 방법에 대해 알아보겠습니다.

HttpClient 라이브러리 추가

Java에서 HttpClient를 사용하기 위해서는 먼저 HttpClient 라이브러리를 Maven이나 Gradle과 같은 의존성 관리 도구를 사용하여 프로젝트에 추가해야 합니다. 다음은 Maven을 사용하는 경우의 의존성 추가 코드입니다.

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

HttpClient를 사용하여 POST 요청 보내기

다음은 HttpClient를 사용하여 JSON 데이터를 POST 요청으로 전송하는 예제 코드입니다.

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
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;

import java.io.IOException;

public class JsonPostExample {
    public static void main(String[] args) {
        CloseableHttpClient httpClient = HttpClients.createDefault();

        try {
            // POST 요청을 보낼 URL 설정
            String url = "http://example.com/api/endpoint";

            // JSON 데이터 생성
            String json = "{\"key1\":\"value1\",\"key2\":\"value2\"}";

            // HttpPost 객체 생성 및 URL 설정
            HttpPost httpPost = new HttpPost(url);

            // HttpEntity에 JSON 데이터 설정
            StringEntity requestEntity = new StringEntity(json, ContentType.APPLICATION_JSON);
            httpPost.setEntity(requestEntity);

            // POST 요청 전송
            HttpResponse response = httpClient.execute(httpPost);

            // 응답 결과 받기
            HttpEntity responseEntity = response.getEntity();
            String responseBody = EntityUtils.toString(responseEntity);

            // 응답 결과 출력
            System.out.println("응답 코드: " + response.getStatusLine().getStatusCode());
            System.out.println("응답 내용: " + responseBody);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                httpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

위의 예제 코드에서는 HttpPost를 사용하여 POST 요청을 생성하고, StringEntity를 사용하여 JSON 데이터를 설정합니다. 그리고 HttpClient.execute() 메소드를 호출하여 POST 요청을 보냅니다. 응답 결과는 HttpResponse 객체로 받아 처리할 수 있습니다.

위의 코드에서는 간단한 JSON 데이터를 보내는 예제를 보여주었습니다. 실제로는 필요에 따라 JSON 데이터를 구성하여 사용하면 됩니다.

참고 자료