目录

NoHttp初始化需要一个Context,最好在Application#onCreate()中初始化,记得在manifest.xml中注册Application

Application:

package com.yanzhenjie.simple;

public class MyApplication extends android.app.Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ...
    }

}

manifest.xml:

...

<application
	android:name="com.yanzhenjie.simple.MyApplication"
	...
 />

默认初始化

如果使用默认始化后,一切采用默认设置。如果你需要配置全局超时时间、缓存、Cookie、底层为OkHttp的话,请看高级初始化。

...
public class MyApplication extends android.app.Application {

    @Override
    public void onCreate() {
        super.onCreate();
        
        NoHttp.initialize(this); // NoHttp默认初始化。
    }

}

高级初始化

超时配置

如果不设置,默认全局超时时间是10s。

NoHttp.initialize(this, new NoHttp.Config()
    .setConnectTimeout(30 * 1000) // 全局连接超时时间,单位毫秒。
    .setReadTimeout(30 * 1000) // 全局服务器响应超时时间,单位毫秒。
);

配置缓存,

默认是开启状态,且保存在数据库。

  • 设置缓存到数据库、禁用缓存
    NoHttp.initialize(this, new NoHttp.Config()
    ...
    .setCacheStore(
          new DBCacheStore(this) // 配置缓存到数据库。
          .setEnable(true) // true启用缓存,fasle禁用缓存。
      )
    );
    
  • 设置缓存到本地SD卡
    如果你想缓存数据到SD卡,那么你需要考虑6.0及以上系统的运行时权限,推荐你看这篇文章:Android6.0运行时权限最佳实践
    NoHttp.initialize(this, new NoHttp.Config()
    ...
      .setCacheStore(
          new DiskCacheStore(this) // 配置缓存到SD卡。
      )
    );
    

配置Cookie

默认是开启状态,保存数据库,NoHttp暂时没有提供保存在其它位置的默认实现,开发者可以新建一个类,实现java自带的的CookieStore接口。

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

值得注意的是:切换了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做网络层。
);