企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 目录 [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做网络层。 ); ```