Simple&Natural

[Android] Retrofit Field 사용 시 Encoding 문제 본문

안드로이드(Android)/기타

[Android] Retrofit Field 사용 시 Encoding 문제

Essense 2020. 10. 7. 20:18
728x90

Field Parameter 에 encoded 옵션을 주지 않아서 생기는 문제.

깨지는 값을 url디코더로 찍어보면 원래 값이 잘 복원되어 나옴.

 

@FormUrlEncoded 를 사용한 POST 요청

interface TestApiService {
    @Headers("content-type: text/plain; charset=utf8")
    @FormUrlEncoded
    @POST("/")
    suspend fun postToLocal(
        @Field("name") name: String,
        @Field("age") age: String
    ): String

}

결과

name=%EC%B2%A0%EC%88%98&age=13

 

 

수정 후

@Field("name", encoded=true) name: String,
@Field("age") age: String

결과

name=철수&age=13

 

 

 

@Body 로 객체를 보내면 따로 Encoding 없이 값이 잘 출력됨.

 

728x90