1. 程式人生 > >RxEasyHttp網路庫初始化與配置(二)

RxEasyHttp網路庫初始化與配置(二)

全域性配置

一般在 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());//新增引數簽名攔截器 } }