# 目录
[TOC]
NoHttp初始化需要一个Context,最好在`Application#onCreate()`中初始化,记得在`manifest.xml`中注册`Application`。
**Application:**
```java
package com.yanzhenjie.simple;
public class MyApplication extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
...
}
}
```
**manifest.xml:**
```xml
...
<application
android:name="com.yanzhenjie.simple.MyApplication"
...
/>
```
# 默认初始化
如果使用默认始化后,一切采用默认设置。如果你需要配置全局超时时间、缓存、Cookie、底层为OkHttp的话,请看高级初始化。
```java
...
public class MyApplication extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
NoHttp.initialize(this); // NoHttp默认初始化。
}
}
```
# 高级初始化
## 超时配置
如果不设置,默认全局超时时间是10s。
```java
NoHttp.initialize(this, new NoHttp.Config()
.setConnectTimeout(30 * 1000) // 全局连接超时时间,单位毫秒。
.setReadTimeout(30 * 1000) // 全局服务器响应超时时间,单位毫秒。
);
```
## 配置缓存,
默认是开启状态,且保存在数据库。
* 设置缓存到数据库、**禁用缓存**
```java
NoHttp.initialize(this, new NoHttp.Config()
...
.setCacheStore(
new DBCacheStore(this) // 配置缓存到数据库。
.setEnable(true) // true启用缓存,fasle禁用缓存。
)
);
```
* 设置缓存到本地SD卡
如果你想缓存数据到SD卡,那么你需要考虑6.0及以上系统的运行时权限,推荐你看这篇文章:[Android6.0运行时权限最佳实践](http://blog.csdn.net/yanzhenjie1003/article/details/52503533)。
```java
NoHttp.initialize(this, new NoHttp.Config()
...
.setCacheStore(
new DiskCacheStore(this) // 配置缓存到SD卡。
)
);
```
## 配置Cookie
默认是开启状态,保存数据库,NoHttp暂时没有提供保存在其它位置的默认实现,开发者可以新建一个类,实现`java`自带的的`CookieStore`接口。
```java
NoHttp.initialize(this, new NoHttp.Config()
...
.setCookieStore(
new DBCookieStore(this)
.setEnable(false) // true启用自动维护Cookie,fasle禁用自动维护Cookie。
)
);
```
## 配置网络层
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做网络层。
);
```