How to read and write cookies for Android

Source: Internet
Author: User

An android network application requires you to use your own webview to access the web site. After successful remote logon, the cookie is written to your mobile phone and reserved for automatic logon. I found a lot of information. It is found that reading cookies is still common, but there is not much information to write cookies through programs.

Let's take a look at how to read cookies:

Try
{
Defaulthttpclient httpclient = new defaulthttpclient ();
Httpget = new httpget ("http://www.hlovey.com ");
Httpresponse response = httpclient.exe cute (httpget );
Httpentity entity = response. getentity ();
List <cookie> cookies = httpclient. getcookiestore (). getcookies ();
If (entity! = NULL ){
Entity. consumecontent ();
}

If (cookies. isempty ()){
Log. I (TAG, "NONE ");
} Else {
For (INT I = 0; I & lt; cookies. Size (); I ++ ){
Log. I (TAG, "-domain" + cookies. Get (I). getdomain ());
Log. I (TAG, "-path" + cookies. Get (I). getpath ());
Log. I (TAG, "-value" + cookies. Get (I). getvalue ());
Log. I (TAG, "-name" + cookies. Get (I). getname ());
Log. I (TAG, "-port" + cookies. Get (I). getports ());
Log. I (TAG, "-comment" + cookies. Get (I). getcomment ());
Log. I (TAG, "-commenturl" + cookies. Get (I). getcommenturl ());
Log. I (TAG, "-all" + cookies. Get (I). tostring ());
}
}
Httpclient. getconnectionmanager (). Shutdown ();

} Catch (exception e ){
// Todo
} Finally {
// Todo
}
By analyzing COM. android. browser source code. It is found that the default browser for Android adds cookies to the database. Unlike windows, win uses a TXT text file to store cookies. Android stores cookies in databases. The specific introduction is described in Android cookie storage location. We all know that the storage space of each android application is independent. Whether preference or database storage is used, the preference will be stored under each/data/package name/(preference is stored in/data/package
Name/shared_prefs/xxxx. XML ). As mentioned above, cookies exist in databases. If you need to retain cookies when using a non-browser to access the network, we should create a cookie table in the database and store the corresponding cookies. Follow the default broswer code:

/** Declare constants of some Database Operations */
Private Static sqlitedatabase mdatabase = NULL;
Private Static final string database_file = "webview. DB ";
Private Static final string cookies_name_col = "name ";
Private Static final string cookies_value_col = "value ";
Private Static final string cookies_domain_col = "Domain ";
Private Static final string cookies_path_col = "path ";
Private Static final string cookies_expires_col = "expires ";
Private Static final string cookies_secure_col = "secure ";
Mdatabase = loginapiactivity. This. openorcreatedatabase (database_file, 0, null );
// Create a cookie Database
If (mdatabase! = NULL ){
// Cookies
Mdatabase.exe csql ("create table if not exists cookies"
+ "(_ Id integer primary key ,"
+ Cookies_name_col + "text," + cookies_value_col
+ "Text," + cookies_domain_col + "text ,"
+ Cookies_path_col + "text," + cookies_expires_col
+ "Integer," + cookies_secure_col + "integer" + ");");
Mdatabase.exe csql ("create index if not exists cookiesindex on"
+ "Cookies" + "(PATH )");
}
}
 
/* Write cookie */
Public void addcookie (cookie ){
If (cookie. getdomain () = NULL | cookie. getpath () = NULL | cookie. getname () = NULL
| Mdatabase = NULL ){
Return;
}
String mcookielock = "ASD ";
Synchronized (mcookielock ){
Contentvalues cookieval = new contentvalues ();
Cookieval. Put (cookies_domain_col, Cookie. getdomain ());
Cookieval. Put (cookies_path_col, Cookie. getpath ());
Cookieval. Put (cookies_name_col, Cookie. getname ());
Cookieval. Put (cookies_value_col, Cookie. getvalue ());
 
Mdatabase. insert ("cookies", null, cookieval );

}
}

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.