Android Xutils框架HttpUtil Get请求缓存问题

话说,今天和服务器开发人员小小的逗逼了一下,为啥呢?

  话说今天有个“收藏产品”的请求接口,是get request的哦,我客户端写好接口后,点击“收藏按钮”,返回“收藏成功”,我又点了一下,尼玛居然还是“收藏成功”,我再点一下,这下对了,返回给我“取消收藏成功”,好吧,我又点了一下,彻底郁闷了,居然又是“取消收藏成功”,这不是逗我的么?

  于是我让服务器人员检查他的接口,是不是有啥幺蛾子,这么诡异。结果他检查了半天,反馈我没问题,并让我去他机器上看下,他用的是postman发送请求接口进行测试的。

我一看,哈,居然真没问题,难道是我错了?

  我回头又检查了一遍,没错啊,我写的代码怎么会错呢?(程序员就是要这么自信)

  于是撕逼之战开始了,我让他检查他服务器的错,他让我检查客户端的错。。。。到底是谁的错呢?

  折腾了半天之后,我发现了错误之处。

  ——是Xutils框架HttpUtil Get请求缓存问题。


  Xutils框架Http模块添加GET请求文本内容时实现LRU缓存的工作,可设置缓存默认过期时间和针对当前请求的过期时间。

  

   听起来神奇吧,Xutils框架的get请求居然实现了LRu缓存了,也就是说,在我不停点击“收藏按钮”的时候,发送的请求直接返回了上一次请求的数据,而不是进行了新的请求。

   哎,我居然不知道这个功能,居然犯了这么逗逼的错误。

   好吧,重新改写了请求工具类,完善的工具类给大家:

[java]  view plain copy print ?
  1. /** 
  2.      * 发送http请求,自动实现异步处理 
  3.      * 
  4.      * @param url            请求的地址 
  5.      * @param params         请求的参数 
  6.      * @param iOAuthCallBack 数据回调接口 
  7.      */  
  8.     public static void sendRequest(final Context context,  
  9.                                    final HttpMethod method, String url, RequestParams params,  
  10.                                    final IOAuthCallBack iOAuthCallBack) {  
  11.         LogUtils.d("requestUrl : " + getAbsoluteUrl(url));  
  12.   
  13.         HttpUtils http = new HttpUtils();  
  14.   
  15.         http.configCurrentHttpCacheExpiry(1000 * 5);  
  16.         // 设置超时时间  
  17.         http.configTimeout(5 * 1000);  
  18.         http.configSoTimeout(5 * 1000);  
  19.   
  20.         if(method==HttpMethod.GET){  
  21.   
  22.             http.configCurrentHttpCacheExpiry(5000); // 设置缓存5秒,5秒内直接返回上次成功请求的结果。  
  23.         }  
  24.   
  25.         http.send(method, getAbsoluteUrl(url), params,  
  26.                 new RequestCallBack<String>() {  
  27.   
  28.                     @Override  
  29.                     public void onStart() {  
  30.                         LogUtils.d(method.name() + " request is onStart.......");  
  31.                     }  
  32.   
  33.                     @Override  
  34.                     public void onSuccess(ResponseInfo<String> responseInfo) {  
  35.                         LogUtils.d("statusCode:" + responseInfo.statusCode + " ----->" + responseInfo.result);  
  36.                         iOAuthCallBack.getIOAuthCallBack(responseInfo.result);// 利用接口回调数据传输  
  37.                     }  
  38.   
  39.                     @Override  
  40.                     public void onFailure(HttpException error, String msg) {  
  41.                         LogUtils.d("statusCode:" + error.getExceptionCode() + " -----> " + msg);  
  42.                         iOAuthCallBack.getIOAuthCallBack("FF");// 利用接口回调数据传输  
  43.                     }  
  44.                 });  
  45.     }  

后记:

  Xutils框架是一款功能强大的第三方工具类的框架,它有四个模块,ViewUtil,Dbtuls,BitmapUtil,HtpUtil;每一个工具类可以完成相应的一个模块的功能。之前我就转载了四篇博文介绍Xutils,有兴趣的同学可以翻阅,爱钻研的同学可以下载源码学习。

  我用了这款框架做了半年的应用,这四个模块都用过,总体感觉就一个字——方便、爽!

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值