지도/로컬 API에 대한 문의게시판입니다.
키는 rest api키를 사용하고 있고 url도 제대로 입력했다고 생각합니다만…
response code는 401이고 실시간 api 호출에 /v2/search/keyword항목이 잡히지 않네요.
url은 시청을 예로 들었을 떄
https://dapi.kakao.com/v2/local/search/keyword.json?query=시청
이렇게 보냈구요. 물론 query는 UTF-8로 인코딩 했습니다.
그리고 키는
connection.setRequestProperty("Authorization", "KakaoAK " + R.string.kakao_rest_key);
문제가 뭘까요…
Header에 Authorization
뿐만 아니라 Host
값도 넣어보세요.
connection.setRequestProperty("Authorization", "KakaoAK " + R.string.kakao_rest_key);
connection.setRequestProperty("Host", "dapi.kakao.com");
이렇게 하는게 맞나요? api호출이 없는 것과 401이 오는 건 변함이 없네요…ㅜㅜ
웹콘솔에 사이트 도메인에 입력한 host를 입력해 주셔야 할 겁니다.
아래 스샷에서 맨 아래에 등록하는거요.
웹이 아니라 안드로이드에서 json파일을 받고 싶어서 사용하는거라 도메인은 그냥 아무거나 써놨습니다;
잘못 접근하는 건가요?
어느 분이 알려주셔서 포스트맨으로 해보니 포스트맨에선 됩니다.
하지만 여전히 똑같이 Authorization헤더 하나만 넣었는데 안드로이드 상에선
{
"errorType":"AccessDeniedError",
"message":"appKey(2131558518) does not exist"
}
라는 에러가 수신되며 응답 코드와 메세지는 401, Unauthorized군요… 앱키를 왜 못찾는걸까요…
포스트맨 캡쳐본입니다.
아… 해결했습니다… 원인.,…이 창피하군요…ㅠㅠ
string 리소스를 가져다 썼는데 그냥 가져다 써서 리소스 id값이 갔던거였습니다;;;
원 코드는 이랬구요.
connection.setRequestProperty("Authorization", "KakaoAK " + R.string.kakao_rest_key);
아래와 같이 수정하니 정상적으로 200을 받아옵니다.
connection.setRequestProperty("Authorization", "KakaoAK "
+ mAcivity.getResources().getString(R.string.kakao_rest_key));
성실히 답변해주셔서 감사합니다. 뭐랄까 너무 어처구니 없는 실수라 죄송하군요…
1개의 좋아요
결과가 좋으면 된거죠
저도 이것저것 401을 재현해보려고 했는데
다른 것들만 의심하고 있었네요.
제가 안드로이드 개발자가 아니라서 위와 같은 가능성을 빠르게 언급해 드리지 못한 점, 죄송하게 생각합니다. 많이 돌아오셨군요
2개의 좋아요