標籤:android xutils httputil
話說,今天和伺服器開發人員小小的逗逼了一下,為啥呢?
話說今天有個“收藏產品”的請求介面,是get request的哦,我用戶端寫好介面後,點擊“收藏按鈕”,返回“收藏成功”,我又點了一下,尼瑪居然還是“收藏成功”,我再點一下,這下對了,返回給我“移除最愛成功”,好吧,我又點了一下,徹底鬱悶了,居然又是“移除最愛成功”,這不是逗我的嗎?
於是我讓伺服器人員檢查他的介面,是不是有啥么蛾子,這麼詭異。結果他檢查了半天,反饋我沒問題,並讓我去他機器上看下,他用的是postman發送請求介面進行測試的。
我一看,哈,居然真沒問題,難道是我錯了?
我回頭又檢查了一遍,沒錯啊,我寫的代碼怎麼會錯呢?(程式員就是要這麼自信)
於是撕逼之戰開始了,我讓他檢查他伺服器的錯,他讓我檢查用戶端的錯。。。。到底是誰的錯呢?
折騰了半天之後,我發現了錯誤之處。
——是Xutils架構HttpUtil Get請求緩衝問題。
Xutils架構Http模組添加GET請求常值內容時實現LRU緩衝的工作,可設定緩衝預設到期時間和針對當前請求的到期時間。
聽起來神奇吧,Xutils架構的get請求居然實現了LRu緩衝了,我居然不知道,居然犯了這麼逗逼的錯誤。
好吧,重新改寫了請求工具類,完善的工具類給大家:
/** * 發送http請求,自動實現非同步處理 * * @param url 請求的地址 * @param params 請求的參數 * @param iOAuthCallBack 資料回調介面 */ public static void sendRequest(final Context context, final HttpMethod method, String url, RequestParams params, final IOAuthCallBack iOAuthCallBack) { LogUtils.d("requestUrl : " + getAbsoluteUrl(url)); HttpUtils http = new HttpUtils(); http.configCurrentHttpCacheExpiry(1000 * 5); // 設定逾時時間 http.configTimeout(5 * 1000); http.configSoTimeout(5 * 1000); if(method==HttpMethod.GET){ http.configCurrentHttpCacheExpiry(0); // 設定緩衝5秒,5秒內直接返回上次成功請求的結果。 } http.send(method, getAbsoluteUrl(url), params, new RequestCallBack<String>() { @Override public void onStart() { LogUtils.d(method.name() + " request is onStart......."); } @Override public void onSuccess(ResponseInfo<String> responseInfo) { LogUtils.d("statusCode:" + responseInfo.statusCode + " ----->" + responseInfo.result); iOAuthCallBack.getIOAuthCallBack(responseInfo.result);// 利用介面回調資料轉送 } @Override public void onFailure(HttpException error, String msg) { LogUtils.d("statusCode:" + error.getExceptionCode() + " -----> " + msg); iOAuthCallBack.getIOAuthCallBack("FF");// 利用介面回調資料轉送 } }); }
後記:
Xutils架構是一款功能強大的第三方工具類的架構,它有四個模組,ViewUtil,Dbtuls,BitmapUtil,HtpUtil;每一個工具類可以完成相應的一個模組的功能。之前我就轉載了四篇博文介紹Xutils,有興趣的同學可以翻閱,愛鑽研的同學可以下載源碼學習。
我用了這款架構做了半年的應用,這四個模組都用過,總體感覺就一個字——方便、爽!
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Android Xutils架構HttpUtil Get請求緩衝問題