Android Xutils架構HttpUtil Get請求緩衝問題

來源:互聯網
上載者:User

標籤: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請求緩衝問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.