1. 程式人生 > >android學習筆記之利用AsyncHttpClient實現登入及cookie使用

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

public 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;
	}

}
在LoginActivity中通過下面方法例項化該client物件並儲存cookie
<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