프로그래밍/Android

[Android Studio] 범블비 Network Inspector 인코딩 깨짐 해결방법

Lou Park 2022. 3. 5. 22:42

안드로이드 스튜디오 범블비(Bumblebee) 버전으로 업데이트하니 원래 잘 나오던 Network Inspector에서의 응답 글자 인코딩이 깨져보였다.

 

해결방법

해결방법은 Retrofit Request Header에 Accept-Encoding을 추가해주면된다.

Accept-Encoding: identity;

이는 클라이언트가 지원하는 인코딩을 서버에 알려주는 것인데, identity의 경우 압축이나 수정없이 어떠한 인코딩도 수행되지 않음을 의미한다. 실제 프로덕션에서는 gzip 인코딩등 압축을 이용할 수 있기때문에 Debug 모드일때만 Accept-Encoding을 identity;로 바꿔주도록 조건문을 추가하는 것이 좋다.

 

1. 개별 API에 추가하는 방법

@Headers("Accept-Encoding: identity")
@FormUrlEncoded
@POST("some/test/api")
suspend fun getTestData(
    @Field("") empty: String = ""
): Response<DataResponse<Any>>

 

2. 모든 API에 추가하는 방법

커스텀 Interceptor를 만들어서 관련 API를 보낼땐 헤더를 추가해서 보내도록 할 수 있다. OkHttpClient.Builder에 addInterceptor로 만들어진 Interceptor를 추가하여 사용가능하다.

class CustomInterceptor() : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val builder = chain.request().newBuilder()

        // 내 서버에 보내는 요청만 Accept-Encoding 추가
        if (original.url.toString().contains(BuildConfig.BASE_URL)) {
            builder.addHeader("Accept-Encoding", "identity")
        }
        
        return chain.proceed(builder.build())
    }
}