상황 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()를 통해 전달하여 추가 인코딩을 방지하여 해결
댓글