【发布时间】:2019-03-20 18:30:54
【问题描述】:
我正在使用带有 rxjava 的改造 2 来发送休息请求。和 Gson 作为 json 解析。
如果 Gson 无法解析 json 字符串,则抛出 java.lang.IllegalStateException 并带有一些消息。我的问题是我不知道这个错误发生在哪个 url 上。
如果错误类型是 HttpException,我可以从中获取 url,但在其他类型中,例如 java.lang.IllegalStateException 和 TimeoutException,只能访问错误消息,我看不到 url。
如何在 rxjava 中实现 url 和改造 catch。
这是我的代码:
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}")
})
})
【问题讨论】:
-
if(t instanceof HttpException){ Log.d("path",((HttpException) t).response().raw().request().url().url()。 toString()); }....
-
@kubersingh 这就是我所做的。我想要其他类型异常的解决方案
-
好的,我正在使用 callabck 方式,我总是在 @Override public void onFailure(Call call, Throwable t) 方法上得到错误响应
-
是的,如果使用回调,调用实例可用,但在 RxJava ...
标签: android kotlin retrofit2 rx-java2 rx-android