android 请求参数打印,Android开发-----关于解决Retrofit打印HttpLog和设置连接超时的问题...
問題,
1 由于Retrofit默認(rèn)連接超時時間只有10s 某些情況下可能連接時間會超過10s,這個時候就會報出SocketTimeoutException 這個時候我們就需要自己設(shè)置超時間,
2 很多時候需要查看自己請求的網(wǎng)絡(luò)地址,或者請求參數(shù),當(dāng)然也可以借助抓包工具,通過OKHttp自帶的可以支持打印Log,我們在控制臺就可以看見請求信息或返回的數(shù)據(jù),也不需要另外開工具,也還是比較方便。
解決辦法
針對這2個問題寫了一個工具類僅供參考,
需要打印Http請求地址等信息需要添加Gradle引用
compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'
Retrofit默認(rèn)支持OkHttp 所以不需要再額外添加。
工具類如下。
/**
* [description about this class]
*
* @author zhangqil
* @DATE 2017-04-11 15:21
* @copyright Copyright 2010 RD information technology Co.,ltd.. All Rights Reserved.
*/
public class RetrofitUtils {
private static RetrofitUtils mOkHttpUtils;
//解決優(yōu)化查詢超時問題 默認(rèn)10s
private static final int DEFAULT_TIMEOUT = 30; //此處默認(rèn)超時時間為30s
private TimeUnit mTimeUnitSECONDS = TimeUnit.SECONDS;
private OkHttpClient.Builder build = new OkHttpClient.Builder();
private RetrofitUtils() {
}
public static RetrofitUtils getInstance() {
if (mOkHttpUtils == null) {
mOkHttpUtils = new RetrofitUtils();
}
return mOkHttpUtils;
}
public OkHttpClient build() {
return build.build();
}
/***
* 添加超時時間
*
* @param timeOut 超時時間 單位秒
* @return
*/
public RetrofitUtils addTimeOut(int timeOut) {
if (timeOut <= 0) timeOut = DEFAULT_TIMEOUT;
build.connectTimeout(timeOut, mTimeUnitSECONDS)
.writeTimeout(timeOut, mTimeUnitSECONDS)
.readTimeout(timeOut, mTimeUnitSECONDS);
return this;
}
/***
* 添加http請求log 包括請求url 請求參數(shù) 返回的參數(shù) 等信息。
*
* @return
*/
public RetrofitUtils addHttpLog() {
//日志顯示級別
HttpLoggingInterceptor.Level level = HttpLoggingInterceptor.Level.BODY;
//新建log攔截器
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(String message) {
if (BuildConfig.DEBUG) {
Log.i("httpLog", "message:" + message);
}
}
});
loggingInterceptor.setLevel(level);
//OkHttp進(jìn)行添加攔截器loggingInterceptor
build.addInterceptor(loggingInterceptor);
return this;
}
}
如何使用:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(You BASE_URL)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //此處是添加Rxjava支持
.addConverterFactory(GsonConverterFactory.create())//添加Gson支持
.client(RetrofitUtils.getInstance().addTimeOut(30).addHttpLog().build()) //構(gòu)建自己的OkHttpClient
.build();
總結(jié)
以上是生活随笔為你收集整理的android 请求参数打印,Android开发-----关于解决Retrofit打印HttpLog和设置连接超时的问题...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言运行时更入下一行,C语言高级语言程
- 下一篇: 2021年2月Harmonyos时候上线