目录

网络层配置

强烈建议你看此文之前看看NoHttp的初始化与配置

NoHttp的网络层是通过NetworkExecutor接口来配置的,内部提供了一个基于HttpURLConnection的接口实现类URLConnectionNetworkExecutor,在NoHttp项目中用另一个module提供了一个基于OkHttp的接口实现类OkHttpNetworkExecutor,二者选其一即可,关于二者该如何使用选择请看项目如何引入NoHttp

值得注意的是:切换了NoHttp的网络底层后,NoHttp的上层代码不需要任何改动,你的应用层代码也不需要任何改动。

默认采用HttpURLConnection的实现做底层,既URLConnectionNetworkExecutor

NoHttp.initialize(this, new NoHttp.Config()
    ...
    .setNetworkExecutor(new URLConnectionNetworkExecutor()) // 使用HttpURLConnection做网络层。
);

如果要使用OkHttp作为网络层,请在app的gradle中添加依赖:

compile 'com.yanzhenjie.nohttp:okhttp:1.1.0'

然后在初始化的时候这么做:

NoHttp.initialize(this, new NoHttp.Config()
    ...
    .setNetworkExecutor(new OkHttpNetworkExecutor())  // 使用OkHttp做网络层。
);

到底该用OKHttp还是URLConnection

好多人咨询到底是使用HttpURLConnection还是OkHttp,下面做个简单的解释。

HttpURLConnection是Android系统自带的api,无需依赖其它任何第三方库。

  • HttpURLConnection

    • 不用依赖第三方底层框架,相应的apk的体积也不会增大。
    • 在5.0以下的系统中DELETE请求方法不允许发送body,因此会在http协议的实现上做一些妥协。
    • Android4.4以后HttpURLConnection的底层使用OkHttp2.7.5来实现。
  • OkHttp

    • square开发的第三方框架(非系统集成),相对高效、稳定。
    • 写文档的时候OkHttp已经更新到3.4.1了。
    • 使用OkHttp的好处是第三方框架有bug可以改代码,不像系统集成的api没办法改动。

我个人比较推荐使用OkHttp作为NoHttp的底层,我们公司的所有项目也是用nohttp的,全都是配置okhttp为底层的。