개발 이슈

[Android] 오픈 API 키 문제 (Retrofit2)

소복 2019. 10. 24. 07:00

오픈 API를 활용하여 안드로이드에서 요청을 보낼 때 발생했던 문제다.

Retrofit2 라이브러리를 사용하여 요청을 보냈는데 아래와 같이 응답이 제대로 오지 않았다.

<resultCode>10</resultCode>

<resultMsg>INVALID REQUEST PARAMETER ERROR.</resultMsg>


문제 )

interface NetworkService {
    @GET("/service/SecndSrtpdFrcstInfoService2/ForecastSpaceData")
    fun getWeather(@Query("serviceKey")key:String, @Query("base_date")date:String,
                   @Query("base_time")time:String, @Query("nx")nx:Int, @Query("ny")ny:Int,
                   @Query("pageNo")page:Int, @Query("numOfRows")row:Int, @Query("_type")type:String):Call<GetResponse>
}

위와 같이 serviceKey는 String으로 보냈다.

일반 인증키를 그대로 String값으로 넣었는데 키값이 invalid하다는 것이였다.


해결 ) 

키값이 자동으로 인코딩 된 후 요청이 보내져서 발생했던 문제였다.

따라서 오픈 API 웹사이트에서 보여주는 "일반 인증키"를 그대로 쓰지 말고 디코딩 하여 사용하면 된다.

(google에 url decode 라고 치면 디코딩하는 웹사이트를 쉽게 찾을 수 있다.)