본문 바로가기
Spring/TroubleShooting

WebClient OPEN API HTTP GET 호출 문제

by Mecodata 2024. 11. 20.

상황 1

공공데이터 포털의 OPEN API를 이용하여 원하는 데이터를 WebClient를 활용한 HTTP GET 방식으로 추출하려고 다음과 같이 시도하였지만 java.net.UnknownHostException: Failed to resolve 'http:' 오류 발생

 

원인 1

UriBuilder의 path() 메서드에서 전체 URL을 사용한 것이 문제 → http:를 호스트명으로 잘못 해석

※ UriBuilder.path()는 절대 경로가 아니라 상대 경로를 설정하는 데 사용

 

해결 방법 1

다음과 같이 baseUrl에는 API의 기본 URL을 입력하고 나머지 상대경로UriBuilder.path()로 지정

 

상황 2

해결 방법 1로 수정했으나 400 Bad Request 발생

 

원인 2

OPEN API 접근 승인에 필요한 serviceKey의 값을 WebClient가 .queryParam()에서 추가 인코딩 진행

 

해결 방법 2

WebClient.queryParam()을 사용할 경우 이미 URL-encoded된 값은 추가 인코딩의 가능성이 있어 부적합하여

WebClient.uri()에 전체 URL을 URI.create()를 통해 전달하여 추가 인코딩을 방지하여 해결

 

댓글