2012-10-01 51 views
4

我正在構建Android應用程序以提供Android手機上的網站功能。在Android應用程序發送的HTTP請求之間維護Cookie

人們需要登錄,他們仍然在使用cookie,讓他們做自己的賬戶來登錄的事情。所有用於登錄/認證的代碼都已經爲網站完成了,現在我正在編寫一個Android應用程序來執行相同的操作。

我的問題是,如果Android應用程序向PHP服務器發送HTTP請求,並且服務器返回設置一些cookie(以顯示用戶已經登錄),那麼這些cookie會在Android應用程序期間保持設置所有未來的HTTP請求到服務器?

或者,我需要制定出一個新的認證計劃爲Android,e.g經過特殊令牌到應用程序的用戶登錄,並應用在所有將來的請求提供此令牌驗證用戶身份?

回答

3

您應該使用CookieManagerCookieStore要保存的Cookie。

CookieManager會將每個傳入HTTP響應的cookie存儲到CookieStore中,併爲每個傳出的HTTP請求檢索cookie。應該從該存儲庫中自行刪除已啓用的HttpCookies。

您可以將此與HttpURLConnection類一起使用。

+0

get(URI uri)檢索符合指定URI的cookie這是否意味着我需要發出兩個HTTP請求,第一個檢查用戶的登錄信息是否正確,然後是第二個獲取cookie? –

+0

我沒有直接與Cookie管理器工作恐怕,但同事建議遵循HttpURLConnection文檔中的模式http://developer.android.com/reference/java/net/HttpURLConnection.html –

3

一旦你登錄到應用程序,你應該保存標記SharedPrefrences。你可以在每個Http請求稍後使用。即使應用程序重新啓動,你有該標記。因此,SharedPredPrefrence更好。

+0

獲得但這意味着我將不得不重新計劃在服務器上的驗證碼。如果有一種方法可以使用cookies,那就更好了。 –

1

,一旦你在放記錄的SharedPreferences

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPreferences.edit(); 
editor.putString("userName", "Rock"); 
editor.putString("token", "[email protected]"); 

內從SharedPreferences

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
String username = sharedPreferences.getString("userName", ""); 
String token = sharedPreferences.getString("token", "");