[java] HttpClient를 사용하여 웹 페이지에 POST 요청하는 방법은?

웹 페이지에 POST 요청을 보내기 위해 HttpClient를 사용하는 방법을 알아보겠습니다.

  1. HttpClient 라이브러리 추가

먼저 HttpClient를 사용하기 위해 HttpClient 라이브러리를 프로젝트에 추가해야 합니다. 이를 위해 Maven을 사용하신다면, pom.xml 파일에 다음 의존성을 추가하세요:

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

Gradle을 사용하신다면, build.gradle 파일의 dependencies 블록에 다음을 추가하세요:

implementation 'org.apache.httpcomponents:httpclient:4.5.12'
  1. POST 요청 보내기

HttpClient를 사용하여 웹 페이지에 POST 요청을 보내려면 다음과 같이 코드를 작성하세요:

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

import java.io.IOException;

public class HttpPostExample {
    public static void main(String[] args) {
        HttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost("http://example.com/api/endpoint");

        // POST 파라미터 설정
        StringEntity requestBody = new StringEntity("param1=value1&param2=value2");
        httpPost.setEntity(requestBody);

        // Header 설정 (optional)
        httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");

        try {
            HttpResponse response = httpClient.execute(httpPost);
            String responseBody = EntityUtils.toString(response.getEntity());
            System.out.println("Response: " + responseBody);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서는 HttpClient의 execute() 메서드를 호출하여 POST 요청을 보냅니다. POST 파라미터는 StringEntity를 이용하여 설정할 수 있으며, 필요에 따라 Header를 설정할 수도 있습니다.

  1. 응답 처리

위의 코드에서는 POST 요청의 응답을 HttpResponse 객체로 받아와서 처리하고 있습니다. 응답의 내용을 확인하기 위해 EntityUtils.toString(response.getEntity()) 메서드를 사용하여 응답의 바디를 문자열로 변환하여 출력하였습니다.

이제 HttpClient를 사용하여 웹 페이지에 POST 요청을 보내는 방법을 알게 되었습니다. 자세한 내용은 HttpClient의 공식 문서를 참고하시기 바랍니다.