# 目錄
[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做網絡層。
);
```