티스토리 뷰

Android

Kakao REST API 사용하기

갈치참치꽁치멸치 2019. 6. 12. 03:09

KaKao REST API 를 통해서 검색기능을 만들 일이 생겼다.

Retrofit을 사용하여 REST API를 사용해보자.

model을 만드는 것은 생략한다.

 

우선 Retrofit 객체를 만든다.

baseUrl에 https://dapi.kakao.com/ 가 들어가야한다. 

 

private fun retrofitInterface(): Retrofit {
        return Retrofit.Builder()
            .baseUrl("https://dapi.kakao.com/")
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
            .client(httpClient.build())
            .build()
    }

 

다음으로 interface를 구성하려고 한다.

 

내가 필요한 부분은 keyword로 검색이었고, json의 형태로 결과를 받아오기를 원했기 때문에

@GET("v2/local/search/keyword.json") 을 추가해주었다.

 

문제는 Header에 Authorization을 추가해주어야하는데

@Headers()에 키를 그대로 입력했더니 HTTP 401 Error가 나왔다.

찾아보다 혹시나하는 마음에

@Headers("Authorization: KakaoAK XXXXXXXXXXXXXXX")

의 형태로 입력했더니 인증이 정상적으로 진행되었다.

 

쿼리로 보낼 것은 keyword만 필요했기 때문에 "query"를 통해 keyword를 전달하였고, x좌표나 y좌표, 반경 거리 등을 쿼리로 보낼 수 있는듯하다.

 

결론적으로 interface안에는 아래와 같은 코드가 들어가게 된다.

 

@Headers("Authorization: KakaoAK " + RestAPIKey.kakao)
@GET("v2/local/search/keyword.json")
fun keywordSearch(@Query("query") keyword: String) : Observable

 

이제 Retrofit을 이용해서 MainActivity에서 REST API를 호출하기 위해 함수를 작성하였다.

 

private fun getKeywordSearch(keyword: String) {
        subscription = SearchService.restAPI().keywordSearch(keyword)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { result ->
                    Log.d("keywordResult", result.documents[0].place_name)
                },
                { err ->
                    Log.e("Error User",err.toString())
                }
            )
    }

 

EditText에 TextWatcher를 붙여 텍스트가 변할 때 마다 getKeywordSearch 함수를 호출하여 검색기능을 완성하였다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함