如何在android中对cookie进行读写
如何在android中对cookie进行读写?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
读取cookie:
try { DefaultHttpClienthttpclient=newDefaultHttpClient(); HttpGethttpget=newHttpGet("http://www.hlovey.com"); HttpResponseresponse=httpclient.execute(httpget); HttpEntityentity=response.getEntity(); List<Cookie>cookies=httpclient.getCookieStore().getCookies(); if(entity!=null){ entity.consumeContent(); } if(cookies.isEmpty()){ Log.i(TAG,"NONE"); }else{ for(inti=0;i<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(Exceptione){ //Todo }finally{ //Todo }
通过分析com.android.browser的源码,发现android默认的browser增加cookie是在数据库中增加记录,和window不同,win是采用一个txt文本文件的形式来存储cookie。而android是将cookie存储在数据库中。具体的介绍在《android cookie存储位置》一文中有介绍。我们都知道,android每个应用程序的存储空间都是独立的。不管使用preference还是database存储,都会在每个/data/data/package name/下面进行存储(preference存储在/data/data/package name/shared_prefs/xxxx.xml)。前面也说到cookie是存在数据库中,那么如果采用非浏览器访问网络需要保留cookie的话我们就应该在database中建立cookies表,并且存入相应的cookies数据。仿照默认broswer的代码:
/**声明一些数据库操作的常量*/ privatestaticSQLiteDatabasemDatabase=null; privatestaticfinalStringDATABASE_FILE="webview.db"; privatestaticfinalStringCOOKIES_NAME_COL="name"; privatestaticfinalStringCOOKIES_VALUE_COL="value"; privatestaticfinalStringCOOKIES_DOMAIN_COL="domain"; privatestaticfinalStringCOOKIES_PATH_COL="path"; privatestaticfinalStringCOOKIES_EXPIRES_COL="expires"; privatestaticfinalStringCOOKIES_SECURE_COL="secure"; mDatabase=LoginApiActivity.this.openOrCreateDatabase(DATABASE_FILE,0,null); //创建cookie数据库 if(mDatabase!=null){ //cookies mDatabase.execSQL("CREATETABLEIFNOTEXISTScookies" +"(_idINTEGERPRIMARYKEY," +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.execSQL("CREATEINDEXIFNOTEXISTScookiesIndexON" +"cookies"+"(path)"); } } /*写cookie*/ publicvoidaddCookie(Cookiecookie){ if(cookie.getDomain()==null||cookie.getPath()==null||cookie.getName()==null ||mDatabase==null){ return; } StringmCookieLock="asd"; synchronized(mCookieLock){ ContentValuescookieVal=newContentValues(); 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); } }
关于如何在android中对cookie进行读写问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注恰卡编程网行业资讯频道了解更多相关知识。
推荐阅读
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能
-
android怎么实现多点触摸应用
-
Android怎么实现手势划定区域裁剪图片
-
android怎么实现简单的矩形裁剪框
-
Android单选多选按钮怎么使用
-
Android中如何利用oncreate获取控件高度或宽度
Android中如何利用oncreate获取控件高度或宽度本篇内容...
-
Android中怎么使用onSaveInstanceState()方法
Android中怎么使用onSaveInstanceState()方法...