[java] HttpClient의 멀티파트 요청을 작성하는 방법은?

Apache HttpClient 라이브러리를 사용하면 Java에서 HTTP 요청을 보낼 수 있습니다. 멀티파트 요청은 파일을 첨부하는 등의 경우에 사용되며, 다음과 같이 작성할 수 있습니다.

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.HttpClients;

import java.io.File;
import java.io.IOException;

public class MultiPartRequestExample {

    public static void main(String[] args) {
        HttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost("http://example.com/upload");
        
        // 멀티파트 엔티티 생성
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        
        // 파일 첨부
        File file = new File("path/to/file");
        FileBody fileBody = new FileBody(file);
        builder.addPart("file", fileBody);
        
        // 다른 필드 추가
        builder.addTextBody("username", "JohnDoe");
        
        // 엔티티 설정
        HttpEntity entity = builder.build();
        httpPost.setEntity(entity);
        
        // 요청 보내기
        try {
            HttpResponse response = httpClient.execute(httpPost);
            // 응답 처리
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 예제는 HttpClient를 사용하여 멀티파트 요청을 작성하는 방법을 보여줍니다. MultipartEntityBuilder 클래스를 사용하여 멀티파트 엔티티를 생성하고, addPart 메서드를 사용하여 파일을 첨부합니다. 필요에 따라 addTextBody 메서드를 사용하여 다른 필드를 추가할 수도 있습니다.

참고 문서: