Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android本地化存儲Cookie(針對HttpClient)

Android本地化存儲Cookie(針對HttpClient)

編輯:關於Android編程

因為最近有人問我怎麼保存HttpClient的Cookie, 所以這裡寫下, 順便記錄總結吧. 當然, 有Android網絡編程經歷的童鞋一看就懂喇~

 

就不多說了, 直接上代碼:

 

/**
     * 本地存儲Cookie
     * @param response
     */
    private void saveCookies(HttpResponse response) {
        SharedPreferences preferences = getSharedPreferences(cookies, MODE_PRIVATE);
        List theCookies = client.getCookieStore().getCookies();

        StringBuffer sb = new StringBuffer();

        for(int k=0; k

設置Cookie:

 

 

String url = http://www.host.com/test;
            HttpGet get = new HttpGet(url);
            SharedPreferences sharedPreferences = getSharedPreferences(cookies, MODE_PRIVATE);
            get.setHeader(Cookie, sharedPreferences.getString(cookies, ));

            try
            {
                HttpResponse response = client.execute(get);
                HttpEntity entity = response.getEntity();

                if(response.getStatusLine().getStatusCode() != HttpStatus.SC_OK)
                {
                    Log.e(TAG, 保存失敗);
                    //...
                }
                else
                {
                    Log.e(TAG, 保存成功);
                    //...

                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }

這樣即使退出應用後, 下次重新使用Cookie, 也可以避免一些重復的HTTp請求, 比如重復登錄什麼的. 但是要注意一個地方, Cookie是有效期的, 如果超過有效期再去使用就會無效, 需要重新登錄才能進行其他的操作. 如上面的代碼, 測試的Cookie有效時間是一個月.

 

\

所以在使用Cookie, 可以同時保存Cookie的有效期, 當然不保存也可以, 攜帶無效Cookie去訪問是服務器自然也會返回相應的提示, 根據提示響應即可. 另外唠嗑唠嗑, Cookie是一種很簡單的文本數據, 記錄了服務器和客戶端之間的訪問信息, 因此讀取和存儲, 管理的效率很高, 但不好的是不夠安全, 本地化存儲最好注意安全. 當然如果不是什麼很重要的數據, 並且有良好的使用習慣, 也沒什麼.

 

 

上面是針對Android開發環境中原生的HttpClient, 如果是使用其他Apache的HttpClient jar包, 比如commons-httpclient-3.1.jar. 可能會發現上面的方法使用起來並不方便, 那麼我們還可以模仿浏覽器處理Cookie的策略, 使用該jar包中特有的httpPost.setRequestHeader()方法添加訪問信息, 比如

httpPost.setRequestHeader(Host, host地址);

httpPost.setRequestHeader(Connection,Keep-Alive);

httpPost.setRequestHeader(Cookie, cookie);

httpPost.setRequestHeader(User-Agent, userAgent);

 

然後, 我們利用抓包工具, 隨便查看電腦浏覽器的某個請求, 能看到Headers中有類似格式的Cookie數據(下圖是訪問有道網站的請求):

\

可見, 這種處理方式跟浏覽器的策略是類似的.

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved