[java] HttpClient를 사용하여 JSON 데이터를 송수신하는 방법은?

HttpClient는 Java에서 HTTP 요청을 보내고 응답을 받는 데 사용되는 클래스입니다. JSON 데이터를 송수신하려면 HttpClient를 설정하고 요청을 만들어야 합니다.

먼저, HttpClient를 설정하는 방법은 다음과 같습니다.

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

public class HttpClientExample {
    public static void main(String[] args) {
        HttpClient httpClient = HttpClientBuilder.create().build();
    }
}

HttpClient를 설정한 후, JSON 데이터를 송수신하려면 다음과 같이 하면 됩니다.

public class HttpClientExample {
    public static void main(String[] args) {
        HttpClient httpClient = HttpClientBuilder.create().build();

        try {
            HttpPost request = new HttpPost("http://example.com/api/endpoint");

            // JSON 데이터 생성
            JSONObject json = new JSONObject();
            json.put("key1", "value1");
            json.put("key2", "value2");

            // JSON 데이터를 StringEntity로 변환하여 요청에 설정
            StringEntity params = new StringEntity(json.toString());
            request.addHeader("content-type", "application/json");
            request.setEntity(params);

            // 요청을 보내고 응답을 받음
            HttpResponse response = httpClient.execute(request);

            // 응답 데이터 추출
            String responseBody = EntityUtils.toString(response.getEntity());

            // 응답 데이터 출력
            System.out.println(responseBody);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            // HttpClient 사용이 끝나면 연결을 종료
            httpClient.getConnectionManager().shutdown();
        }
    }
}

위의 예제에서는 HttpClient를 사용하여 POST 요청을 보내고, JSON 데이터를 StringEntity로 변환하여 요청에 설정합니다. 그리고 요청을 보내고 응답을 받은 후, 응답 데이터를 추출하여 출력합니다.

참고로, HttpClient는 Apache HttpComponents를 사용하는 라이브러리입니다.