retrofit 响应时间_Retrofit 使用中遇到的一个问题

因为项目中有一个需求,就是SessionId是否过期,如果过期就需要用户重新登录。有限期是半个小时,超过半个小时,后台哥们就会返回403。所以我需要做的就是拦截网络请求。提前获取Response,并对网络状态码进行判断。如果403,就调登录接口,获取最新SessionId,然后重新发起请求。

代码有点乱,大家凑合看0.0

下面是我定义的网络拦截器

private GlobalHttpHandler mHandler;

public RequestIntercept(GlobalHttpHandler mHandler) {

this.mHandler = mHandler;

}

@Override

public Response intercept(Chain chain) throws IOException {

Request request = chain.request();

Buffer requestbuffer = new Buffer();

if (request.body() != null) {

request.body().writeTo(requestbuffer);

} else {

Timber.tag("Request").w("request.body() == null");

}

if (mHandler != null)//在请求服务器之前可以拿到request,做一些操作比如给request添加header,如果不做操作则返回参数中的request

request = mHandler.onHttpRequestBefore(chain, request);

//打印url信息

Timber.tag("Request")

.w("Sending Request %s on %n Params ---> %s%n Connection ---> %s%n Headers ---> %s", request.url(), request.body() != null ? requestbuffer.readUtf8() : "null", chain

.connection(), request.headers());

long t1 = System.nanoTime();

Response originalResponse = chain.proceed(request);

long t2 = System.nanoTime();

//打赢响应时间

Timber.tag("Response").

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值