java urlconnection cookie_使用HTTPUrlConnection时如何保留cookie?
小编典典
我花了几个小时,但我自己设法建立了一个自定义cookie存储。
您必须通过执行以下操作来附加它:
public class application extends Application {
@Override
public void onCreate() {
super.onCreate();
CookieManager cmrCookieMan = new CookieManager(new MyCookieStore(this.objContext), CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cmrCookieMan);
}
}
这是实际的存储空间:
/*
* This is a custom cookie storage for the application. This
* will store all the cookies to the shared preferences so that it persists
* across application restarts.
*/
class MyCookieStore implements CookieStore {
/*
* The memory storage of the cookies
*/
private Map> mapCookies = new HashMap>();
/*
* The instance of the shared preferences
*/
private final SharedPreferences spePreferences;
/*
* @see java.net.CookieStore#add(java.net.URI, java.net.HttpCookie)
*/
public void add(URI uri, HttpCookie cookie) {
System.out.println("add");
System.out.println(cookie.toString());
List cookies = mapCookies.get(uri);
if (cookies == null) {
cookies = new ArrayList();
mapCookies.put(uri, cookies);
}
cookies.add(cookie);
Editor ediWriter = spePreferences.edit();
HashSet setCookies = new HashSet();
setCookies.add(cookie.toString());
ediWriter.putStringSet(uri.toString(), spePreferences.getStringSet(uri.toString(), setCookies));
ediWriter.commit();
}
/*
* Constructor
*
* @param ctxContext the context of the Activity
*/
@SuppressWarnings("unchecked")
public MyCookieStore(Context ctxContext) {
spePreferences = ctxContext.getSharedPreferences("CookiePrefsFile", 0);
Map prefsMap = spePreferences.getAll();
for(Map.Entry entry : prefsMap.entrySet()) {
for (String strCookie : (HashSet) entry.getValue()) {
if (!mapCookies.containsKey(entry.getKey())) {
List lstCookies = new ArrayList();
lstCookies.addAll(HttpCookie.parse(strCookie));
try {
mapCookies.put(new URI(entry.getKey()), lstCookies);
} catch (URISyntaxException e) {
e.printStackTrace();
}
} else {
List lstCookies = mapCookies.get(entry.getKey());
lstCookies.addAll(HttpCookie.parse(strCookie));
try {
mapCookies.put(new URI(entry.getKey()), lstCookies);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
System.out.println(entry.getKey() + ": " + strCookie);
}
}
}
/*
* @see java.net.CookieStore#get(java.net.URI)
*/
public List get(URI uri) {
List lstCookies = mapCookies.get(uri);
if (lstCookies == null)
mapCookies.put(uri, new ArrayList());
return mapCookies.get(uri);
}
/*
* @see java.net.CookieStore#removeAll()
*/
public boolean removeAll() {
mapCookies.clear();
return true;
}
/*
* @see java.net.CookieStore#getCookies()
*/
public List getCookies() {
Collection> values = mapCookies.values();
List result = new ArrayList();
for (List value : values) {
result.addAll(value);
}
return result;
}
/*
* @see java.net.CookieStore#getURIs()
*/
public List getURIs() {
Set keys = mapCookies.keySet();
return new ArrayList(keys);
}
/*
* @see java.net.CookieStore#remove(java.net.URI, java.net.HttpCookie)
*/
public boolean remove(URI uri, HttpCookie cookie) {
List lstCookies = mapCookies.get(uri);
if (lstCookies == null)
return false;
return lstCookies.remove(cookie);
}
}
2020-09-16
java urlconnection cookie_使用HTTPUrlConnection时如何保留cookie?相关推荐
- java 登录牵手_Java: HttpURLConnection 模拟登录方法 (带cookie 的Post/Get)_20160908_七侠镇莫尛貝...
// http://blog.csdn.net/woxueliuyun/article/details/43267365 package tool class MyHttpUrlConn { publ ...
- Java网络连接之HttpURLConnection、HttpsURLConnection
工具类包含两个方法: http请求.https请求 直接看代码: package com.jtools;import java.io.BufferedReader; import java.io.In ...
- 【java程序员必备上班时长计算器】
java代码,根据程序员每天打卡时间,获取上班总时长,上班天数,平均上班时长,超出要求时间,为了方便大家把握时间节奏,合理规划下班时间: 一:效果图片 二:工具类 package com.compan ...
- java日期时间库-常用案例-不保留全分享
java日期时间库-常用案例-不保留全分享 除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使 ...
- java.lang.IllegalStateException: 启动子级时出错
java.lang.IllegalStateException: 启动子级时出错 at org.apache.catalina.core.ContainerBase.addChildInternal( ...
- 复制文件时怎么保留权限
复制文件时怎么保留权限 浏览次数: 19 次 字体:[增加 减小] 类型:转载 例如你现在已经登陆到新的域文件服务器,设置需要共享的文件夹E:\newshare(这个必须要先设置再复制,否则后面会出问 ...
- Java中重写equals()方法时注意点
Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...
- 解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错
解决IntelliJ IDEA报错:调用方法[manageApp]时发生异常java.lang.IllegalStateException: 启动子级时出错 问题描述: 笔者将一个在 Tomcat ...
- java当数值超过byte时_java试题及答案
java试题及答案 java是面向对象的语言,那么java认证有哪些常见试题呢?下面跟yjbys小编一起来看看最新java认证考试试题及答案,仅供大家参考! 1.一个".java" ...
- Java如何控制用户输入的长度,用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!!...
用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!! | create a new class FixLengthDocument extends Pla ...
最新文章
- 与技术无关的书单--你可以笑着说有些是“精神鸦片”
- Ubuntu14.04 64位机上安装OpenCV2.4.13(CUDA8.0)版操作步骤
- bzoj4385 POJ2015 Wilcze doły
- Oracle中,如何查看FRA(Flashback Recovery Area)的利用率
- 2017 年 VR 将走的 3 个方向 你更认可哪一个?
- 跨链Cosmos(10) IBC接口
- qt整个窗口上绘制矩形与在窗口的子控件上绘制矩形
- 在sqlplus中实现命令的上翻下翻功能
- liunx 下 php 的安装
- php正则多个字段,正则表达式,grep_linux shell中如何实现对多个关键字段的排除?,正则表达式,grep,linux,shell - phpStudy...
- Java程序员面试常见问题
- UE编辑器去掉*.bak备份文件
- 读取任意编码的文件(转)
- 互联网日报 | 7月14日 星期三 | 京东宣布涨薪两个月;腾讯收购搜狗股权获无条件批准;教育部辟谣取消教师寒暑假...
- Jasperreport_6.18的吐血记录三之简易交叉表 + 页面预览和导出
- 生产排程系统_生产计划排程APS系统中排产算法的探讨
- 不用工具,如何快速计算文件的MD5?
- 谷歌浏览器 翻译失败解决办法
- Unicode转换为UTF-8过程Demo
- JSP+Servlet实现留言板(简陋)
热门文章
- 文件比较 增量 更新 系统发布 增量更新
- Google gae部署php简单说明
- u-boot环境的擦除,默认设置,批写入
- SAP-PP后台配置(第二部分)
- Producer-Consumer question : OO 生产者-消费者:面向对象
- 获取字符串中的汉字拼音首字母
- 前端最佳实践(一)——DOM操作
- SparkSQL错误:Could not find uri with key [dfs.encryption.key.provider.uri] to create a keyProvider...
- linux中/etc/rc.local脚本的作用
- POJ 2991 Crane