RxEasyHttp網路庫初始化與配置(二)
阿新 • • 發佈:2019-01-04
全域性配置
一般在 Aplication,或者基類中,只需要呼叫一次即可,可以配置除錯開關,全域性的超時時間,公共的請求頭和請求引數等資訊
初始化需要一個Context,最好在Application#onCreate()中初始化,記得在manifest.xml中註冊Application。
Application:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
}
}
manifest.xml:
...
<application
android:name=".MyApplication"
...
/>
預設初始化
如果使用預設始化後,一切採用預設設定。如果你需要配置全域性超時時間、快取、Cookie、底層為OkHttp的話,請看高階初始化。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
EasyHttp.init(this);//預設初始化
}
}
高階初始化
可以進行超時配置、網路快取配置、okhttp相關引數配置、retrofit相關引數配置、cookie配置等,這些引數可以選擇性的根據業務需要配置。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
EasyHttp.init(this);//預設初始化,必須呼叫
//全域性設定請求頭
HttpHeaders headers = new HttpHeaders();
headers.put("User-Agent", SystemInfoUtils.getUserAgent(this, AppConstant.APPID));
//全域性設定請求引數
HttpParams params = new HttpParams();
params.put("appId", AppConstant.APPID);
//以下設定的所有引數是全域性引數,同樣的引數可以在請求的時候再設定一遍,那麼對於該請求來講,請求中的引數會覆蓋全域性引數
EasyHttp.getInstance()
//可以全域性統一設定全域性URL
.setBaseUrl(Url)//設定全域性URL
// 開啟該除錯開關並設定TAG,不需要就不要加入該行
// 最後的true表示是否列印okgo的內部異常,一般開啟方便除錯錯誤
.debug("EasyHttp", true)
//如果使用預設的60秒,以下三行也不需要設定
.setReadTimeOut(60 * 1000)
.setWriteTimeOut(60 * 100)
.setConnectTimeout(60 * 100)
//可以全域性統一設定超時重連次數,預設為3次,那麼最差的情況會請求4次(一次原始請求,三次重連請求),
//不需要可以設定為0
.setRetryCount(3)//網路不好自動重試3次
//可以全域性統一設定超時重試間隔時間,預設為500ms,不需要可以設定為0
.setRetryDelay(500)//每次延時500ms重試
//可以全域性統一設定超時重試間隔疊加時間,預設為0ms不疊加
.setRetryIncreaseDelay(500)//每次延時疊加500ms
//可以全域性統一設定快取模式,預設是不使用快取,可以不傳,具體請看CacheMode
.setCacheMode(CacheMode.NO_CACHE)
//可以全域性統一設定快取時間,預設永不過期
.setCacheTime(-1)//-1表示永久快取,單位:秒 ,Okhttp和自定義RxCache快取都起作用
//全域性設定自定義快取儲存轉換器,主要針對自定義RxCache快取
.setCacheDiskConverter(new SerializableDiskConverter())//預設快取使用序列化轉化
//全域性設定自定義快取大小,預設50M
.setCacheMaxSize(100 * 1024 * 1024)//設定快取大小為100M
//設定快取版本,如果快取有變化,修改版本後,快取就不會被載入。特別是用於版本重大升級時快取不能使用的情況
.setCacheVersion(1)//快取版本為1
//.setHttpCache(new Cache())//設定Okhttp快取,在快取模式為DEFAULT才起作用
//可以設定https的證書,以下幾種方案根據需要自己設定
.setCertificates() //方法一:信任所有證書,不安全有風險
//.setCertificates(new SafeTrustManager()) //方法二:自定義信任規則,校驗服務端證書
//配置https的域名匹配規則,不需要就不要加入,使用不當會導致https握手失敗
//.setHostnameVerifier(new SafeHostnameVerifier())
//.addConverterFactory(GsonConverterFactory.create(gson))//本框架沒有采用Retrofit的Gson轉化,所以不用配置
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addCommonHeaders(headers)//設定全域性公共頭
.addCommonParams(params)//設定全域性公共引數
//.addNetworkInterceptor(new NoCacheInterceptor())//設定網路攔截器
//.setCallFactory()//局設定Retrofit物件Factory
//.setCookieStore()//設定cookie
//.setOkproxy()//設定全域性代理
//.setOkconnectionPool()//設定請求連線池
//.setCallbackExecutor()//全域性設定Retrofit callbackExecutor
//可以新增全域性攔截器,不需要就不要加入,錯誤寫法直接導致任何回撥不執行
//.addInterceptor(new GzipRequestInterceptor())//開啟post資料進行gzip後傳送給伺服器
.addInterceptor(new CustomSignInterceptor());//新增引數簽名攔截器
}
}