Rxjava中的错误句柄:ConnectException:无法连接

休伊塔

我正在使用Rxjava错误处理,

默认RxJavaCallAdapterFactory可以处理许多错误,

但是,如果我的FCM服务器已经死亡,我仍然会崩溃。

这是

/**
* Created by Administrator on 16/09/2016.
* In Dagger 2 frameworks.
* Network Module for implement Retrofit + Gson structure
*/
@Module
public class NetworkModule {

private final String baseURL;

public NetworkModule(String baseURL) {
    this.baseURL = baseURL;
}

@Singleton
@Provides
FCMApi provideFCMApi(@Named("fcm") Retrofit retrofit) {
    return retrofit.create(FCMApi.class);
}

@Singleton
@Provides
@Named("fcm")
Retrofit provideFCMRetrofit(@Named("fcm") OkHttpClient okHttpClient, Context context) {
    return new Retrofit.Builder()
            .baseUrl(context.getString(R.string.host_fcm))
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())

            // TODO CRASH IN HERE, IF ENABLE, HOW TO AVOID THIS RXJAVA ERROR HANDLING WITHOUT RUNTIME WARNING
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();
}

@Singleton
@Provides
@Named("fcm")
OkHttpClient getOkHttpClientForFCM(Context context, @Named("fcm") Interceptor interceptor) {
    OkHttpClient.Builder okClientBuilder = new OkHttpClient.Builder();
    okClientBuilder.addInterceptor(interceptor);

    if (BuildConfig.DEBUG) {
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel( HttpLoggingInterceptor.Level.BASIC);

        // Can be Level.BASIC, Level.HEADERS, or Level.BODY
        // See http://square.github.io/okhttp/3.x/logging-interceptor/ to see the options.
        okClientBuilder.addInterceptor(httpLoggingInterceptor);
    }

    final File baseDir = context.getCacheDir();
    if (baseDir != null) {
        final File cacheDir = new File(baseDir, "HttpResponseCache");
        okClientBuilder.cache(new Cache(cacheDir, 50 * 1024 * 1024));
    }

    return okClientBuilder.build();
}

@Singleton @Provides @Named("fcm")
Interceptor provideInterceptorForFCM(final Context context) {
    return chain -> {
        /**
         * Add header with following attributes as agree with Web Server
         * - Token
         */
        Request original = chain.request();

        // Add header to request
        Request.Builder requestBuilder = original.newBuilder();

        requestBuilder
                .addHeader("X-Auth-Token", context.getString(R.string.x_auth_token))
                .addHeader("X-Asukabu-Client-Device-ID", getAndroidId(context));

        Request request = requestBuilder.build();
        return chain.proceed(request);
    };
}

知道如何避免这种崩溃的人,

或者,如果启用,则可以跳过翻新2中的错误处理

请告诉我,

谢谢,

p / s:我使用Dagger2。

亚历克斯·舒托夫(Alex Shutov)

rxJava中有方法.onErrorReturn(),您可以返回空对象而不是错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

swift 中 NSRangeException 的错误句柄

rxswift错误句柄问题

在不退出终端的情况下退出错误句柄功能中的外壳脚本

Laravel 新手,身份验证错误句柄?

如何显示React内部的API错误句柄?

子异步回调函数的错误句柄

具有自定义错误消息的MVC错误句柄

即时将链接修复为错误3044或更多的错误句柄

ES6 Promise.all()错误句柄-是否需要.settle()?

删除 index,index.php 错误句柄,尾随斜杠 PHP Htaccess

带有错误句柄的自定义验证 Ninja 表单

如何将用户输入定义为dd / mm / yyyy和错误句柄输入?

执行自定义错误句柄后执行默认异常处理程序

Expressjs如何确定要调用的错误处理程序。如果我们有多个错误句柄

HTTP传输错误:java.net.ConnectException:连接超时:在Soap ws客户端中连接

如何解决错误`java.net.ConnectException:无法连接到localhost / 127.0.0.1:8000`

Spring Integration-消息驱动通道适配器-变压器错误句柄,原始消息

MockWebServer-ConnectException:无法连接到

WebDriverException:java.net.ConnectException:在MacOS上使用Selenium 3和chromedriver无法连接到本地主机错误

org.openqa.selenium.WebDriverException:java.net.ConnectException:使用IEDriverServer无法连接到本地主机错误

尝试执行任何需要处理的操作时,无法修复WinAPI中的“无效句柄”错误

错误:无法在R Shiny中打开连接

java.net.ConnectException:无法连接到/10.0.2.2:443

java.net.ConnectException: 无法连接到 /localhost:8080

句柄是Haskell中的半封闭错误吗?

无法在Perl中关闭文件句柄

上载错误:无法连接到DataPusher。ckan 2.4.3中的错误

保存错误:gzfile(file,“ wb”)中的错误:无法打开连接

java.net.ConnectException:无法连接到/192.168.253.3(端口2468):连接失败:ECONNREFUSED(连接被拒绝)