Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JPQL
- 그리디
- SpringBoot
- AOP
- 스프링 핵심 원리
- QueryDSL
- 백준
- Spring Boot
- spring
- Servlet
- JDBC
- Greedy
- 스프링 핵심 기능
- transaction
- http
- 인프런
- Proxy
- db
- Exception
- 김영한
- jpa
- 알고리즘
- springdatajpa
- pointcut
- 스프링
- kotlin
- 자바
- Android
- java
- Thymeleaf
Archives
- Today
- Total
개발자되기 프로젝트
[Server] Odsay API호출 문제 해결 본문
1. 현상
- 호출시 ApiKeyAuthFail 발생.
"error": [
{
"code": "500",
"message": "[ApiKeyAuthFailed] ApiKey authentication failed."
}
]
2. OdSay 답변
웹 페이지를 통한 호출이 아닌 웹 브라우저 상에서 호출을 원하시는 경우
플랫폼을 서버로 변경한 뒤 PC의 공인 IP를 등록해주셔야 합니다.
하지만 공인 IP등록 후 재발급된 key로 변경했지만 동일한 에러 발생.
3. 인코딩 확인
- key에 특수문자가 포함 된 경우 변환하여 요청해야 함.
- 새로 발급받은 key에 특수문자가 포함되어 있었음.
URI 인코딩가이드(URI Encoding Guide)
URI는 ASCII문자를 사용하여 전송할 수 있으며, 특수문자의경우 다른의미를 갖기때문에 유효한 ASCII형식으로 변환되어야합니다.apiKey는 보안정책상 특수문자를 포함하기 때문에 직접 또는 JavaScript에서 encodeURI() 함수를 통하여 변환할 수 있습니다.
인코딩 변환 값(Encoding Conversion Value)
apiKey에 특수문자가 포함된경우 아래와같이 변환하여 요청해주시기 바랍니다.
4. Postman Test
postman으로 request를 보내보았다.
오 정상적으로 작동한다.
5. application Test
하지만 application을 실행하면 인코딩된 uri는 다른 값을 나타낸다 음.
인코딩은 안하면 인코딩이 안되지만.
인코딩을 하고 실행하면 인코딩이 이중으로 됨.. 흠..
특수문자는 %2B같은 형태로 바꾸면 %가 한 번 더 인코딩 되는 문제가 발생한다.
6. encode(boolean encoded)
URI uri = UriComponentsBuilder.fromUriString(uriString).build(true).toUri();
문제 해결은 간단했다.
encode()에는 booelan이 전달되는데 encode 되었는지 여부를 지정할 수 있다.
true로 지정하면 encode된 String이 넘어간다. default는 false이다.
따라서 이전에 build시 true를 지정하지 않았기 encode한 key값의 %가 이중으로 인코딩 된 것.
'Project > 대중교통 길찾기' 카테고리의 다른 글
간단한 프론트 개발 (0) | 2022.01.20 |
---|---|
[Server] return 값 분석 (0) | 2022.01.20 |
[Server] Odsay 대중교통 api 연동 (0) | 2022.01.17 |
[Server] 회원 도메인 개발 (0) | 2022.01.15 |
[Server] 회원 도메인 설계 (0) | 2022.01.15 |
Comments