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()
반응형