키워드 검색에서 401이 들어옵니다

지도/로컬 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를 입력해 주셔야 할 겁니다.

아래 스샷에서 맨 아래에 등록하는거요.
image

웹이 아니라 안드로이드에서 json파일을 받고 싶어서 사용하는거라 도메인은 그냥 아무거나 써놨습니다;
잘못 접근하는 건가요?
어느 분이 알려주셔서 포스트맨으로 해보니 포스트맨에선 됩니다.
하지만 여전히 똑같이 Authorization헤더 하나만 넣었는데 안드로이드 상에선

{
  "errorType":"AccessDeniedError",
  "message":"appKey(2131558518) does not exist"
}

라는 에러가 수신되며 응답 코드와 메세지는 401, Unauthorized군요… 앱키를 왜 못찾는걸까요…

포스트맨 캡쳐본입니다.
postman

아… 해결했습니다… 원인.,…이 창피하군요…ㅠㅠ
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개의 좋아요

결과가 좋으면 된거죠 :slight_smile:

저도 이것저것 401을 재현해보려고 했는데
다른 것들만 의심하고 있었네요.

제가 안드로이드 개발자가 아니라서 위와 같은 가능성을 빠르게 언급해 드리지 못한 점, 죄송하게 생각합니다. 많이 돌아오셨군요

2개의 좋아요