반응형
공공 API 연동 중.
key값이 다르다는 500 응답이 날아왔다. 확인해보니 key는 문제가 없다.
내가 보낸 key를 서버에서 받아보니 내가 보낸 키와 다르다. 특수문자가 들어가있는데 인코딩 문제인 듯.
인코딩 없이 보냈을 때 문제가 됐던 코드
WebClient wc = WebClient.builder().baseUrl(API_URL).build();
try {
ResponseEntity<JSONObject> response = wc.get()
.uri(uri -> uri.queryParam("ServiceKey", SERVICEKEY)
.queryParam("nx", PARAM_NX)
.queryParam("ny", PARAM_NY)
.queryParam("dataType", PARAM_DATATYPE)
.queryParam("base_date", "20210115")
.queryParam("base_time", "1700")
.build()
)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.toEntity(JSONObject.class).block();
System.out.println(response);
공식문서를 보니 uri나 parameter value를 인코딩 해주는 방법이 따로 있는 듯.
이렇게 인코딩모드를 추가했다.
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(API_URL);
factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
WebClient wc = WebClient.builder().uriBuilderFactory(factory).baseUrl(API_URL).build();
인코딩 해주니 문제없이 데이터를 받아온다.
반응형
'Java > Spring' 카테고리의 다른 글
[Spring Security] Servlet Filter 등록과 동작 순서 (1) (0) | 2022.01.12 |
---|---|
[Mybatis] Select시 NullPointerException ... org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible... (0) | 2021.01.18 |
[Spring][Transaction] 트랜잭션 제외하기, 트랜잭션 제외 안 될 때 (0) | 2020.09.07 |
[Logback] Logback 설정 기록. 프로필에 따라, 패키지에 따라 분리. (0) | 2020.09.03 |
SpringBoot ViewResolver 설정, application.yml 읽지 못할 때 (0) | 2020.06.18 |