Android/에러해결

End of input at line 1 column 1 path $

lipnus 2019. 1. 28. 13:22
반응형

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()



반응형