Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[Server] Odsay API호출 문제 해결 본문

Project/대중교통 길찾기

[Server] Odsay API호출 문제 해결

Seung__ 2022. 1. 18. 00:04

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


https://api.odsay.com/v1/api/searchPubTransPathT?SX=126.9707979959352&SY=37.5547020732267&EX=127.10012275846414&EY=37.513264531390575&apiKey=xxxxxx

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