오픈 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 라고 치면 디코딩하는 웹사이트를 쉽게 찾을 수 있다.)
'개발 이슈' 카테고리의 다른 글
[Node.js] NGINX 프록시 설정과 기본 페이지 제거 (0) | 2020.03.19 |
---|---|
[Android] EditText 검색창으로 사용하기 (+ Enter Key Event 제어) (0) | 2019.12.17 |
[MySQL] varchar 에서 number로 / 특정 문자 제거 (0) | 2019.07.11 |
[MySQL] 순위 매기기. MySQL 변수 사용. (0) | 2019.07.11 |
[Linux] 리눅스/우분투 시스템 시간 변경 (timezone 변경) (0) | 2019.05.19 |