android 请求参数打印,Android开发-----关于解决Retrofit打印HttpLog和设置连接超时的问题...

问题,

1 由于Retrofit默认连接超时时间只有10s 某些情况下可能连接时间会超过10s,这个时候就会报出SocketTimeoutException 这个时候我们就需要自己设置超时间,

2 很多时候需要查看自己请求的网络地址,或者请求参数,当然也可以借助抓包工具,通过OKHttp自带的可以支持打印Log,我们在控制台就可以看见请求信息或返回的数据,也不需要另外开工具,也还是比较方便。

解决办法

针对这2个问题写了一个工具类仅供参考,

需要打印Http请求地址等信息需要添加Gradle引用

compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'

Retrofit默认支持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;

//解决优化查询超时问题 默认10s

private static final int DEFAULT_TIMEOUT = 30; //此处默认超时时间为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 请求参数 返回的参数 等信息。

*

* @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进行添加拦截器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()) //构建自己的OkHttpClient

.build();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值