android 持久化儲存cookie
轉:http://blog.csdn.net/jwzhangjie/article/details/29861111
在解析網頁資訊的時候,需要登入後才能訪問,所以使用httpclient模擬登入,然後把cookie儲存下來,以供下一次訪問使用,這時就需要持久化cookie中的內容。
一、請求網路獲取cookie
先看一下下面的程式碼:
- DefaultHttpClient httpclient = new DefaultHttpClient();
-
HttpGet httpget = new HttpGet("http://www.hlovey.com"
- HttpResponse response = httpclient.execute(httpget);
- HttpEntity entity = response.getEntity();
- List<Cookie> cookies = httpclient.getCookieStore().getCookies();
- HttpPost httpPost = new HttpPost(url);
-
List<NameValuePair> formparams = new
- formparams.add(new BasicNameValuePair("id", userid));
- formparams.add(new BasicNameValuePair("passwd", passwd));
- UrlEncodedFormEntity entity;
- try {
-
entity = new UrlEncodedFormEntity(formparams, mobileSMTHEncoding);
- } catch (UnsupportedEncodingException e1) {
- return3;
- }
- httpPost.setEntity(entity);
- httpPost.setHeader("User-Agent", userAgent);
- HttpResponse response = httpClient.execute(httpPost);
儲存cookie有兩種方式一種是資料庫,另一種是SharedPreferences,其中http://blog.csdn.net/junjieking/article/details/7658551是使用資料庫來儲存的,這裡我是使用SharedPreferences儲存。
- package com.smthbest.smth.util;
- import java.util.Locale;
- import android.content.Context;
- import android.content.SharedPreferences;
- import android.text.TextUtils;
- import android.util.Log;
- import org.apache.http.client.CookieStore;
- import org.apache.http.cookie.Cookie;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Locale;
- import java.util.concurrent.ConcurrentHashMap;
- publicclass PersistentCookieStore implements CookieStore {
- privatestaticfinal String LOG_TAG = "PersistentCookieStore";
- privatestaticfinal String COOKIE_PREFS = "CookiePrefsFile";
- privatestaticfinal String COOKIE_NAME_STORE = "names";
- privatestaticfinal String COOKIE_NAME_PREFIX = "cookie_";
- privateboolean omitNonPersistentCookies = false;
- privatefinal ConcurrentHashMap<String, Cookie> cookies;
- privatefinal SharedPreferences cookiePrefs;
- /**
- * Construct a persistent cookie store.
- *
- * @param context Context to attach cookie store to
- */
- public PersistentCookieStore(Context context) {
- cookiePrefs = context.getSharedPreferences(COOKIE_PREFS, 0);
- cookies = new ConcurrentHashMap<String, Cookie>();
- // Load any previously stored cookies into the store
- String storedCookieNames = cookiePrefs.getString(COOKIE_NAME_STORE, null);
- if (storedCookieNames != null) {
- String[] cookieNames = TextUtils.split(storedCookieNames, ",");
- for (String name : cookieNames) {
- String encodedCookie = cookiePrefs.getString(COOKIE_NAME_PREFIX + name, null);
- if (encodedCookie != null) {
- Cookie decodedCookie = decodeCookie(encodedCookie);
- if (decodedCookie != null) {
- cookies.put(name, decodedCookie);
- }
- }
- }
- // Clear out expired cookies
- clearExpired(new Date());
- }
- }
- @Override
- publicvoid addCookie(Cookie cookie) {
- if (omitNonPersistentCookies && !cookie.isPersistent())
- return;
- String name = cookie.getName() + cookie.getDomain();
- // Save cookie into local store, or remove if expired
- if (!cookie.isExpired(new Date())) {
- cookies.put(name, cookie);
- } else {
- cookies.remove(name);
- }
- // Save cookie into persistent store
- SharedPreferences.Editor prefsWriter = cookiePrefs.edit();
- prefsWriter.putString(COOKIE_NAME_STORE, TextUtils.join(",", cookies.keySet()));
- prefsWriter.putString(COOKIE_NAME_PREFIX + name, encodeCookie(new SerializableCookie(cookie)));
- prefsWriter.commit();
- }
- @Override
- publicvoid clear() {
- // Clear cookies from persistent store
- SharedPreferences.Editor prefsWriter = cookiePrefs.edit();
- for (String name : cookies.keySet()) {
- prefsWriter.remove(COOKIE_NAME_PREFIX + name);
- }
- prefsWriter.remove(COOKIE_NAME_STORE);
- prefsWriter.commit();
- // Clear cookies from local store
- cookies.clear();
- }
- @Override
- publicboolean clearExpired(Date date) {
- boolean clearedAny = false;
- SharedPreferences.Editor prefsWriter = cookiePrefs.edit();
-
相關推薦
android 持久化儲存cookie
轉:http://blog.csdn.net/jwzhangjie/article/details/29861111 在解析網頁資訊的時候,需要登入後才能訪問,所以使用httpclient模擬登入,然後把cookie儲存下來,以供下一次訪問使用,這時就需要持久化
android webview 儲存cookie
在用webview登陸某網站web客戶端時,需要儲存cookie,這樣退出再進入時就不用二次登陸,android使用webview解決Cookie問題的方法是———————————————— public class WebClientActivity extends Ac
Android持久化資料儲存——File、SharedPreferences、SQLite
package com.example.mjon.myapplication; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import a
Android AsyncHttpClient登入儲存cookie和讀寫cookie
AsyncHttpClient有個特性:(11)持久化cookie儲存,可以將cookie儲存到你的應用程式的SharedPreferences中AsyncHttpClient Cookie相關的官方的文件This library also includes a Persis
Android使用Asynchronous Http Client完成登入儲存cookie的問題
Persistent Cookie Storage with PersistentCookieStore This library also includes a PersistentCookieStore which is an implementation of the Apache HttpClie
關於Android使用Xutils的WebView儲存Cookie登入
/** * Sync Cookie */ private void syncCookie(Context context, String url){ try{ Log.d("Nat: webView.syncCookie.url", url);
餓了麼開源專案:便捷高效的Android資料持久化儲存框架
版權所有。所有權利保留。 歡迎轉載,轉載時請註明出處: Android應用開發時經常要對許多資料進行持久化儲存,便於以後訪問。 對於int、double、boolean這些基本資料,可以使用SharedPreference。對於一些物件,往SharedPrefe
android下資料的持久化儲存
列表內容 資料持久化儲存有 檔案儲存(內建儲存,外接儲存(sd卡)), SharedPreference , 資料庫 , 伺服器儲存. 使用檔案 , SharedPreference 或資料庫來儲存資料會相對更簡單些,而且比起將資料儲存在 SD 卡中會更加的
Android資料儲存五種方式
https://www.cnblogs.com/ITtangtang/p/3920916.html SharedPreferences的基本使用-----存,刪,改,查:https://www.cnblogs.com/qianzf/p/7582400.html Android Sha
Python3 Post登入並且儲存cookie登入其他頁面
import urllib.request import sys import http.cookiejar import urllib.parse from bs4 import BeautifulSoup import codecs import re #登入頁面 url = "h
Android 資料儲存之 SQLite資料庫儲存
轉載自:https://www.cnblogs.com/woider/p/5136734.html ----------------------------------------SQLite資料庫---------------------------------------------- SQLite是一
Android手機儲存路徑
手機儲存 手機分為內部儲存和外部儲存 1、內部儲存 主要方法 路徑 Environment.getDataDirectory() /data Environment.getDo
Android 外部儲存,內部儲存路徑
import android.content.Context; import android.os.Environment; import android.util.Log; public class DirectoryUtils { private static final String
Android實現儲存圖片,長圖、長佈局(webView等)
最近開發遇到一個問題,分享的時候 需要分享一個佈局內容,但是要用圖片分享的格式,最開始思考感覺不可能實現,手機上很少有功能可以實現長圖儲存的, 可是經理說,髮長微博的時候就是自動儲存的長圖片,頓時傻眼了,人家是怎麼做的呢??? 本已經放棄該功能,可這麼一說,又開始在網上找,並沒有很明確的找到
Android 本地儲存之外部儲存/內部儲存路徑獲取大全
//:/system String rootDir = Environment.getRootDirectory().toString(); System.out.println("Environment.getRootDirectory()=:" +
iOS 之持久化儲存 plist、NSUserDefaults、NSKeyedArchiver、資料庫
1.什麼是持久化? 本人找了好多文章都沒有找到滿意的答案,最後是從孫衛琴寫的《精通Hibernate:Java物件持久化技術詳解》中,看到如下的解釋,感覺還是比較完整的。摘抄如下: 狹義的理解: “持久化”僅僅指把域物件永久儲存到資料庫中;廣義的理解,“持久化”包括和資料庫相關的各種操作。&n
android 資料儲存<一>----android簡訊傳送器之檔案的讀寫(手機+SD卡)
本文實踐知識點有有三: 1.佈局檔案,android佈局有相對佈局。線性佈局,絕對佈局。表格佈局。標籤佈局等,各個佈局能夠巢狀的。 本文的佈局檔案就是線性佈局的巢狀 <LinearLayout xmlns:android="http://schemas.and
python cookiejar儲存cookie資訊
cookie資訊是什麼? cookie, 某些網站為了辨別使用者身份, 只有登陸之後才能訪問某個頁面; 進行一個會話跟蹤, 將使用者的相關資訊包括使用者名稱等儲存到本地終端 from http import cookiejar from urllib.request import
android刪除儲存卡中的目錄及目錄下的檔案
首先,需要在AndroidManifest.xml中配置寫許可權 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 刪除檔案方法 public static boolean
k8s的持久化儲存PV&&PVC
1.PV和PVC的引入 Volume 提供了非常好的資料持久化方案,不過在可管理性上還有不足。 拿前面 AWS EBS 的例子來說,要使用 Volume,Pod 必須事先知道如下資訊: 當前 Volume 來自 AWS EBS。 EBS Volume 已經提前建立,並且知道確切的 vol