반응형
End of input at line 1 column 1 path $
retrofit에서 response값이 비어있을 때(Length=0) 발생
다음의 코드를 추가한다
Java코드 해결책
Kotlin코드
/**
* 비어있는(length=0)인 Response를 받았을 경우 처리
*/
class NullOnEmptyConverterFactory : Converter.Factory() {
override fun responseBodyConverter(type: Type?, annotations: Array<Annotation>?, retrofit: Retrofit?): Converter<ResponseBody, *>? {
val delegate = retrofit!!.nextResponseBodyConverter<Any>(this, type!!, annotations!!)
return Converter<ResponseBody, Any> {
if (it.contentLength() == 0L) return@Converter EmptyResponse()
delegate.convert(it)
}
}
}
EmptyResponse는 클래스 하나 만들어주면 된다
val retrofit = Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(NullOnEmptyConverterFactory())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_PATH)
.build()
반응형
'Android > 에러해결' 카테고리의 다른 글
IAP결제 시 onProductPurchased가 첫번째 시도에 호출되지 않을 때 (0) | 2019.03.19 |
---|---|
Build.gradle(Project: ~) 가 없어진경우 (0) | 2019.01.30 |
Cannot resolve symbol default_web_client_id (0) | 2019.01.29 |
[Android] Google Search등록 (0) | 2019.01.24 |
SMS Retriver API (0) | 2019.01.20 |