android - 从 retrofit2 和 rxjava 中的错误中获取 url

标签 android kotlin retrofit2 rx-java2 rx-android

我正在使用带有 rxjava 的 retrofit 2 来发送休息请求。和 Gson 作为 json 解析。

如果 Gson 无法解析 json 字符串,则抛出 java.lang.IllegalStateException 和一些消息。我的问题是我不知道这个错误发生在哪个网址上。

如果错误类型是 HttpException 我可以从中获取 url 但在其他类型如 java.lang.IllegalStateExceptionTimeoutException 中只需访问错误消息可用,但我看不到 url。

我怎样才能在 rxjava 中实现 url 和 retrofit 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}")
                })
               })

最佳答案

新的 Consumer() 方法始终提供有关任何类型错误的消息,即使 GSON 错误也是如此

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

关于android - 从 retrofit2 和 rxjava 中的错误中获取 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52831813/

相关文章:

android - 在 Android Studio 中生成 UML 图

android - 使用协程访问数据库

android - Android中如何获取当前的webview对象?

kotlin - Kotlin 中等待异步进程结果的函数

java - 在 Android 上使用 Retrofit 正确解析 JSON

java - Realm 中的空指针异常

android - 如何在按下时更改android AppCompatButton文本颜色

android - 如何将 ImageView 中的图像与 ImageView 的底部对齐?

android - 如何使用Retrofit2解析错误响应?

java - 改造 - 解压 gzip