[java] Java에서 HttpClient를 사용하여 SOAP 웹 서비스 호출하는 방법은?

Java에서 SOAP 웹 서비스를 호출하려면 HttpClient를 사용하는 방법이 있습니다. Java 9 이상에서는 기본적으로 HttpClient가 포함되어 있으므로 따로 라이브러리를 추가로 설치할 필요가 없습니다.

먼저, HttpClient를 사용하기 위해서는 해당 클래스를 임포트(import)해야 합니다.

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

다음으로, HttpClient를 초기화하고 요청을 생성하는 코드를 작성해야 합니다.

// HttpClient 초기화
HttpClient httpClient = HttpClient.newHttpClient();

// 요청 생성
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("http://example.com/soap-service"))
        .header("Content-Type", "text/xml; charset=utf-8")
        .POST(HttpRequest.BodyPublishers.ofString("<soap:Envelope>...</soap:Envelope>"))
        .build();

위의 코드에서는 uri() 메서드를 사용하여 웹 서비스의 URL을 지정하고, header() 메서드를 사용하여 요청 헤더에 Content-Type을 설정합니다. 그리고 POST() 메서드와 BodyPublishers.ofString() 메서드를 사용하여 SOAP 메시지를 요청 바디에 추가합니다.

마지막으로, HttpClient를 사용하여 요청을 실행하고 응답을 처리하는 코드를 작성해야 합니다.

// 요청 실행
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

// 응답 처리
if (response.statusCode() == 200) {
    String responseBody = response.body();
    // 응답 바디 처리
    System.out.println(responseBody);
} else {
    System.out.println("요청 실패: " + response.statusCode());
}

위의 코드에서는 send() 메서드를 사용하여 요청을 실행하고, 응답을 HttpResponse 객체로 받습니다. 응답 상태 코드가 200인 경우에는 응답 바디를 가져와 원하는 방식으로 처리할 수 있습니다.

위의 예제는 HttpClient를 이용하여 SOAP 웹 서비스를 호출하는 기본적인 방법을 보여줍니다. 물론, 실제 서비스에 따라 인증이나 다른 설정이 필요한 경우가 있을 수 있으니 해당 서비스의 문서를 참고하여 필요한 설정을 추가하시길 바랍니다.

참고 문서: