Pat*_*ick 20 android observable rx-java retrofit
使用Obtrables with Retrofit时如何处理网络故障?
鉴于此代码:
Observable<GetJobResponse> observable = api.getApiService().getMyData();
observable
.doOnNext(new Action1<GetJobResponse>() {
@Override
public void call(GetJobResponse getJobResponse) {
//do stuff with my data
}
})
.doOnError(new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
//do stuff with error message
}
});
Run Code Online (Sandbox Code Playgroud)
如果没有网络,请求就会失败,并且不会调用onError.它不会崩溃,但会无声地失败.日志显示Retrofit获取错误:
java.net.UnknownHostException: Unable to resolve host "api-staging.sittercity.com": No address associated with hostname
at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
at com.squareup.okhttp.internal.Dns$1.getAllByName(Dns.java:29)
Run Code Online (Sandbox Code Playgroud)
使用回调,这只是传递给onFailure(RetrofitError错误).如何使用RxJava浮出水面?
Pat*_*ick 33
我的问题实际上是我的代码中的其他地方 使用rxJava + Retrofit处理网络错误非常简单,因为它只是在onError方法中引发了一个RetrofitError:
@Override
public void onError(Throwable e) {
if (e instanceof RetrofitError) {
if (((RetrofitError) e).isNetworkError()) {
//handle network error
} else {
//handle error message from server
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17311 次 |
| 最近记录: |