我正在使用带有rxjava的改造2发送休息请求。和Gson作为json解析。
如果Gson无法解析json字符串,则抛出java.lang.IllegalStateException
和一些消息。我的问题是我不知道该错误发生在哪个网址上。
如果错误类型为HttpException
,我可以从中获取URL,但是在其他类型中,例如java.lang.IllegalStateException
和TimeoutException
,则可以访问错误消息,而我看不到该URL。
我该如何在rxjava中实现url和翻新捕获。
那是我的代码:
mainApi.getSomething(offset, limit, distance, latitude, longitude)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({it:Response<Something>
val entities = it.body()?.entities
callBack.onResponse(it.raw(), entities)
}, {//it:throwable
if (t is HttpException) {
Log.d("logUrl", "HttpException : ${t.response().raw().request().url()} : ${t.code()} :${t.message()}")
} else//something like IllegalStateException or TimeoutException
Log.d("logUrl", "Failure : ${t.localizedMessage}")
})
})
答案 0 :(得分:1)
mGetDeviceObserver.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<RegData>() {
@Override
public void accept(@NonNull RegData mRegData) throws Exception {
}
}, new Consumer<Throwable>() {
@Override
public void accept(@NonNull Throwable t) throws Exception {
if(t instanceof HttpException){ Log.d("path",((HttpException) t).response().raw().request().url().url().toString()); }
}
});