# 目录 [TOC] # 网络层配置 **强烈建议你看此文之前看看[NoHttp的初始化与配置](http://doc.nohttp.net/222342)。** NoHttp的网络层是通过`NetworkExecutor`接口来配置的,内部提供了一个基于`HttpURLConnection`的接口实现类`URLConnectionNetworkExecutor`,在`NoHttp`项目中用另一个`module`提供了一个基于`OkHttp`的接口实现类`OkHttpNetworkExecutor`,二者选其一即可,关于二者该如何使用选择请看[项目如何引入NoHttp](http://doc.nohttp.net/222341)。 **值得注意的是:**切换了NoHttp的网络底层后,NoHttp的上层代码不需要任何改动,你的应用层代码也不需要任何改动。 默认采用`HttpURLConnection`的实现做底层,既`URLConnectionNetworkExecutor`。 ```java NoHttp.initialize(this, new NoHttp.Config() ... .setNetworkExecutor(new URLConnectionNetworkExecutor()) // 使用HttpURLConnection做网络层。 ); ``` 如果要使用OkHttp作为网络层,请在app的gradle中添加依赖: ```groovy compile 'com.yanzhenjie.nohttp:okhttp:1.1.0' ``` 然后在初始化的时候这么做: ```java 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为底层的。