android學習筆記之利用AsyncHttpClient實現登入及cookie使用
首先感謝大神在自定義及使用AsyncHttpClent上的支援,詳見 http://blog.csdn.net/jdsjlzx/article/details/44700965
本文主要記錄一下我的android練習專案開發經過,主要提供一個思路,方便日後用到的時候參考。
android客戶端登入並實現cookie儲存:
能實現登入的方法非常多,最基礎的HttpClient、ASyncTask、Volley框架等,但在登入之後,如果其他頁面的請求需要基於登入時伺服器返回的cookie,那上面的方法都不太好用,HttpClient程式碼量大,ASyncTask封裝的也不好,Volley框架需要重寫才可以實現對cookie的儲存和呼叫。
基於此,通過學習瞭解到,AsyncHttpClient可以實現自動將cookie存至SharePreferences中以供呼叫,且其封裝性好,程式碼十分簡易。
但問題是,官方給出的對cookie的用法為以下兩行程式碼:
PersistentCookieStore myCookieStore = new PersistentCookieStore(this);
client.setCookieStore(myCookieStore);
這在同一個類中確實可以儲存並載入該cookie,但如果在其他類中再次請求網路時,則無法通過該方法設定cookie,這可讓新手的我十分的頭疼,幸好有本文第一行那篇部落格的作者大神幫我,才得以實現。
實現方法:
單獨封裝類FinalAsyncHttpClent用於處理AsyncHttpClient,保證每次得到client物件時都已載入cookie
在LoginActivity中通過下面方法例項化該client物件並儲存cookiepublic class FinalAsyncHttpClient { private AsyncHttpClient client; /* 構造方法 */ public FinalAsyncHttpClient() { client = new AsyncHttpClient();//例項化client client.setTimeout(5);//設定5秒超時 // 獲取cookie列表 if (CookieUtils.getCookies() != null) { BasicCookieStore bcs = new BasicCookieStore(); bcs.addCookies(CookieUtils.getCookies().toArray( new Cookie[CookieUtils.getCookies().size()]));//得到cookie列表 client.setCookieStore(bcs);//給client載入cookie } } /* 得到client物件方法 */ public AsyncHttpClient getAsyncHttpClient() { return this.client; } }
<pre name="code" class="java">AsyncHttpClient client = new FinalAsyncHttpClient().getAsyncHttpClient();<pre name="code" class="java">CookieUtils.saveCookie(client,this);
登入成功後儲存伺服器返回的cookie
CookieUtils.setCookies(CookieUtils.getCookie(LoginActivity.this));
Cookie工具類CookieUtils, (注:在LoginActivity中呼叫時,引數Context需傳入LoginActivity.this)
public class CookieUtils {
private static List<Cookie> cookies;
/* 返回cookies列表 */
public static List<Cookie> getCookies() {
return cookies != null ? cookies : new ArrayList<Cookie>();
}
/* 設定cookies列表 */
public static void setCookies(List<Cookie> cookies) {
CookieUtils.cookies = cookies;
}
/* 儲存cookie */
public static void saveCookie(AsyncHttpClient client, Context context) {
PersistentCookieStore cookieStore = new PersistentCookieStore(context);
client.setCookieStore(cookieStore);
}
/* 得到cookie */
public static List<Cookie> getCookie(Context context) {
PersistentCookieStore cookieStore = new PersistentCookieStore(context);
List<Cookie> cookies = cookieStore.getCookies();
return cookies;
}
/* 清除cookie */
public static void clearCookie(Context context) {
PersistentCookieStore cookieStore = new PersistentCookieStore(context);
cookieStore.clear();
}
}
此時就實現了cookie的持久化,無論後續多少次請求,只要通過封裝的client類來例項化請求物件,即可在例項化時載入儲存的cookie。
最後再次感謝大神的指導,讓我學到許多java程式設計的思想和方法。
相關推薦
android學習筆記之利用AsyncHttpClient實現登入及cookie使用
首先感謝大神在自定義及使用AsyncHttpClent上的支援,詳見 http://blog.csdn.net/jdsjlzx/article/details/44700965 本文主要記錄一下我的android練習專案開發經過,主要提供一個思路,方便日後用到的時候參考。
android學習筆記之客戶端與服務端保持session登入狀態
剛進公司不久,也沒有具體專案任務,只有一個混合開發模式,使用AppCan開發的專案。 雖然混合開發很便捷、很高效,使用html和js就可以完成。 但我依然對android原生開發有著極高的熱情,尤其是在體驗了Android 5.0版本之後,更是對原生體驗著迷。 所以,我利用
android學習筆記之ImageView的scaleType屬性
有關 sni mage nds 目標 big ins 分辨率 處理 我們知道,ImageView有一個屬性叫做scaleType,它的取值一共同擁有八種,各自是:matrix,fitXY。fitStart,fitCenter。fitEnd,center,centerCr
Android 學習筆記之SharedPreference
andro 使用 googl Edito 獲取 存儲 dep ont print Android 學習筆記之SharedPreference SharedPreference作為android常用的四種存儲方式之一,在輕量級的使用中比較常見 創建、獲取sharedprefe
Android學習筆記之IntentService
activit update 使用 pac .get ger foo 異步 tex Android學習筆記之IntentService IntentService是繼承並處理異步請求的一個類,IntentService內有一個工作線程來處理耗時操作,啟動IntentServ
Android學習筆記之效能優化SparseArray
學習內容: 1.Android中SparseArray的使用.. 昨天研究完橫向二級選單,發現其中使用了SparseArray去替換HashMap的使用.於是乎自己查了一些相關資料,自己同時對效能進行了一些測試。首先先說一下SparseArray的原理.
Android學習筆記之詳細講解畫圓角圖片
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android學習筆記之RadioButton RadioGroup
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android學習筆記之百度地圖(駕車路線搜尋及RouteOverlay步行路線搜尋及RouteOverlay)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android學習筆記之為Dialog自定義佈局,並說明空指標問題
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android學習筆記之Bitmap點陣圖雖觸控點移動
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
ES學習筆記之-AvgAggregation的實現過程分析
我們需要檢視資料的統計量時,均值是最重要的特徵之一。 對於海量資料,這類簡單的聚合ES可以做到秒級別返回。聚合是ES的特色功能。 那麼ES是如何實現這一功能的呢? 我們知道,ES的資料儲存在各個節點中, 所以ES的實現AvgAggregation時基本思路就是先統計各個節點,然後彙總。 先了解ES是
android學習筆記之fragment
為什麼引入fragment? 為了適應使用者或裝置的 需求,activity介面可以在執行時組裝,甚至重新組裝。 activity自身並不具有這樣的靈活性。activity檢視可以在執行時切換,但控制檢視的程式碼必須 在activity中實現。結果,各個act
android學習筆記之託管UI fragment
為託管UI fragment,activity必須: 在其佈局中為fragment的檢視安排位置; 管理fragment例項的生命週期。 fragment的生命週期 。類似於activity的生命週期,它具有停止、暫停以及執行 狀態,也
Android學習筆記之IPC
目錄 一、IPC的基本概念 所謂IPC,是Inter-Process Communication的縮寫,即跨程序通訊。說道程序,就要區別於執行緒: 執行緒是cpu排程的最小單元,同時執行緒是一種有限的系統資源 程序一般指一個
Android學習筆記之解決螢幕旋轉後Activity重建問題
0.只需在activity類下重寫onSaveInstanceState方法,下面是一個重寫的例項,目的是儲存oncreate()方法中的臨時變數 @Override protected void onSaveInstanceState(Bundle outState)
Android學習筆記之MeasureSpec
什麼是MeasureSpec Android系統在繪製View的時候,過程是十分複雜的,其中頻繁的使用到了MeasureSpec。那麼MeasureSpec是什麼?有什麼用?簡單點說,它是一個int值的中間變數,用來儲存View的尺寸規格。再說細點,在測量過程中,系統會將V
Android學習筆記之View的事件分發機制
一、點選事件的傳遞規則 所謂的點選事件分發過程,其實就是當我們點選螢幕,產生了一個MotionEvent之後,系統將這個事件傳遞給一個具體View的過程。總的來說,事件總是先傳遞給Activity,然後傳遞給Window,再傳遞給頂級View(Activity→Window
Android學習筆記之自定義View
一、自定義View的分類 1.1.繼承 View 這種方法主要用於實現一些不規則的效果(不方便通過佈局的組合方式來實現),比如靜態或動態地顯示一些不規則的圖形(因此需要重寫onDraw方法)。值得注意的是,繼承View的自定義View需要自己制定 wrap_content
Android學習筆記之百度地圖(周邊檢索poiSearchNearBy跳轉頁面並輸出搜尋結果)
package xiaosi.baiduMap;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import com.baidu.map