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

github源碼地址:https://github.com/zhou-you/RxEasyHttp

全局配置

通常在 Aplication,或者基類中,只須要調用一次便可,能夠配置調試開關,全局的超時時間,公共的請求頭和請求參數等信息
初始化須要一個Context,最好在Application#onCreate()中初始化,記得在manifest.xml中註冊Application。android

Application:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

manifest.xml:

...

<application
    android:name=".MyApplication"
    ...
 />

默認初始化

若是使用默認始化後,一切採用默認設置。若是你須要配置全局超時時間、緩存、Cookie、底層爲OkHttp的話,請看高級初始化git

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        EasyHttp.init(this);//默認初始化
    }
}

高級初始化

能夠進行超時配置、網絡緩存配置、okhttp相關參數配置、retrofit相關參數配置、cookie配置等,這些參數能夠選擇性的根據業務須要配置。github

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());//添加參數簽名攔截器
    }
}
相關文章
相關標籤/搜索