persistent6666是什么意思思

To be persistent bother的用法和样例:
What is important is to be persistent to the end.
重要的是要坚持到底。
What is important is to be persistent to the end .
重要的是要坚持到底。
Causes page view state to be persisted, if called.
如果调用,则保持页视图状态。
Don't bother buttering up to me. I'm too old a hand to be won over by flattery.
不必劳驾来拍我马屁。我可是个老资格,才不吃那一套哩。
He has a yen to be alone in a boat.
他渴望独自待在一条船上。
He likes to be sure of his bodily comforts.
他注重身体上的舒适。
To be persistent bother的海词问答与网友补充:
To be persistent bother的相关资料:
相关词典网站:您的位置: >
VMWare克隆或复制虚拟机后找不到网卡的解决方法
VMWare克隆或复制虚拟机后找不到网卡的解决方法
  VMware 下LINUX出现:Device eth0 does not seem to be present, delaying initialization.解决办法
  VMware 下LINUX下使用ifconfig查看时无eth0网卡相应信息!
  最近装了虚拟机系统是 fedora9,为了以后使用方便对虚拟机进行克隆或复制。当使用克隆后的虚拟机时发现原来在基本系统中的网卡eth0到了新系统却没有了,使用ifconfig -a会发现只有eth1。因为基本系统的网络相关配置都是基于eth0的,eth1没有网络相关的配置,此时要正常该虚拟机中的网络,只有添加eth1的网络配置,这样每次都要修改网卡配置在做多Linux系统测试的时候很不方便。更进一步,如果基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。原因分析: 很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在Debian etch中,udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而VMware会自动生成虚拟机的mac地址。这样,由于基本系统的虚拟机已经记录了该虚拟机的网卡mac地址对应于网卡eth0,在克隆出的虚拟机中由于mac地址发生改变,udev会自动将该mac对应于网卡eth1。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而其实kernel仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。解决方案: 网络搜索发现在Debian etch下,udev将mac与网卡名称的对应关系保存在/etc/udev/rules.d/z25_persistent-net.rules中,在克隆出的虚拟机中只要删除跟NAME=&eth0&相关的行并重启系统即可。例如在Debian etch中删除如下两行: # PCI device 0x0(pcnet32)SUBSYSTEM==&net&,DRIVERS==&?*&,ATTRS{address}==&00:0c:29:4c:46:01&,NAME=&eth0& 在我的fedora9 下修改/etc/udev/rules.d 下的 70-persistent-net.rules 文件 删除 # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda) SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}==&00:0c:29:ad:06:2a&, ATTR{type}==&1&, KERNEL==&eth*&, NAME=&eth0& 然后把eth1对应的哪一行的&eth1&修改为&eth0&即可。另外一种方法是:把里面的内容都删除,然后重新启动,系统也会重新发现网卡硬件,重新产生该文件。 ok!
  总结:
  1: 编辑如下文件
  vi /etc/udev/rules.d/70-persistent-net.rules
  注释NAME=&eth0& 所以行
  2: 注释NAME=&eth0& 所以行
  # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
  #SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}==&00:0c:29:ad:06:2a&, ATTR{type}==&1&, KERNEL==&eth*&,NAME=&eth0&
  3:修改IP地址及主机名
  4:重启,问题解决!
  VMware 下LINUX出现:Device eth0 does not seem to be present, delaying initialization.解决办法
  在做mysql cluster 和lvs cluster的时候用的vmware虚拟环境
  系统: ubuntu server 6.10
  /sbin/ifconfig发现copy/clone之后的虚拟机没网卡
  原来是因为vmware已经修改了mac地址,而系统里面仍然保留原来的mac地址
  修改/etc/iftab 为 vmware.vmx 中配置的mac即可
  顺带提下,别忘记了改主机名(/etc/hostname)和ip(/etc/network/interfaces)地址
  VMware 下LINUX出现:Device eth0 does not seem to be present, delaying initialization.解决办法
  在windowXP下安装了suse linux,在vmware下选择了host-only方式与主机通信。
  使用host-only方式与主机通信,vmware使用的是VMware Network Adapter VMnet1虚拟网卡,查看该网卡的IP是 192.168.174.1。
  在虚拟机下面的linux下遇到了一下几个问题:
  1、找不大 eth0网卡,也就连不上网络。症状是ifconfig以后只现实lo,不显示eth0。
  解决方法:
  ifconfig eth0 up。这样ifconfig以后就显示了eth0。
  找到eth0以后,再运行ifconfig eth0 192.168.174.2 netmask 255.255.255.0。即可与主机通信。
  2、经过上面步骤是找到了eth0,可是重启以后又没有了。
  解决方法:
  cd /etc/sysconfigetwork/
  cp ifcfg-lo ifcfg-eth0
  vim ifcfg-eth0 修改配置如下
  IPADDR=192.168.174.2
  NETMASK=255.255.255.0
  NETWORK=192.168.174.0
  BROADCAST=192.168.174.255
  STARTMODE=onboot
  USERCONTROL=no
  保存,重启,即可。
  VMWare克隆或复制Linux虚拟机后eth0找不到的解决方案
  VMware 下Linux 移动/复制后无法找到Eth0网卡的解决过程 Normal 0 7.8 磅 0 2 false false false EN
  -US ZH-CN X-NONE MicrosoftInternetExplorer4 原文地址: /?p=1881.遇到什么的问
  题(What)在Vmware装了Ubuntu 9.04 Server,今天在启动的时候,发现找不到网卡eth0,在输入ifconfig &
  a的时候,也没有任何Ethnet的信息,而输入eth0 down 的时候,提示我no device found(设备没法找到)
  ,我检查了VMware的EtherNET配置的时候,仍旧是NAT网络设置,和我原来的一样没有了网卡,我就无
  法通过SecureCRT来连接Ubuntu,如果每次都要来到VMware来输入命令,很麻烦2.怎样解决(How)回想了
  在启动VMware的时候,系统提示我的Ubuntu文件被移动(位置被改变了),让我确认是moved还是copy的
  ,我当时候选择了默认的(copy)
  (This virtual machine may have been moved or copied. In order to configure certain management
  and networking features VMware Workstation needs to know which. Did you move this virtual
  machine, or did you copy it? If you don&&t know, answer &I copied it&.)根据这个信息,在google 搜索了
  copy or moved vmware linux,在VMware的官方论坛找到了这个帖子 lost eth0 when using a copied
  ubuntu-server vm,里面提到了多种解决方案,我最终是选择了sudo rm /etc/udev/rules.d/70-persistent
  -net.rules ,执行该命令后,重启ubuntu (sudo reboot),然后ifconfig ,出现了ip地址,问题得到解决3.为
  什么会出现这样的错误,这样做的原因是什么(Why?)为什么会产生这个问题呢,还需要从UUID谈起
  (UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生
  成UUID的API ),虚拟机同样会有一个UUID,而且这个UUID是唯一的。 虚拟机的UUID一般和虚拟机配置
  文件的位置和物理主机有关。当我们对一个虚拟机系统做移动操作的时候,我们不需要新建一个UUID。让
  我们复制一个虚拟机的时候我们应该选择建立一个新的UUID,来保证此虚拟机的唯一性而当我选择了I
  copied it的时候,VM自然会为我新建一个UUID,一些新的Linux版本是把以太网与Mac地址绑定,当新的
  UUID建立的时候,Mac地址就被改变了,但由于eth0设备所装载的配置与读取默认配置的Mac地址不一致
  。另外的解决方案:进入 /etc/sysconfigetwork 或者/etc/sysconfigetwork-scripts ,编辑eth0配置文件
  。比较在配置文件里面的Mac地址与输入ifconfig 输出的mac地址,如果两者不一致,统一为ifconfig输出的
  mac地址,然后重启sudo rm /etc/udev/rules.d/70-persistent-net.rules 能够成功的原因:该文件的内容:#
  This file was automatically generated by the /lib/udev/write_net_rules# program run by the
  persistent-net-generator.rules rules file.## You can modify it, as long as you keep each rule on a
  single line.# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
  SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}==&00:0c:29:d2:3f:2c&,
  ATTR{type}==&1&, KERNEL==&eth*&, NAME=&eth0&# PCI device 0x0 (pcnet32)
  SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}==&00:0c:29:87:43:18&,
  ATTR{type}==&1&, KERNEL==&eth*&, NAME=&eth1&# PCI device 0x0 (pcnet32)
  SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}==&00:0c:29:87:43:22&,
  ATTR{type}==&1&, KERNEL==&eth*&, NAME=&eth2&# PCI device 0x0 (pcnet32)
  SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}==&00:0c:29:c8:3a:15&,
  ATTR{type}==&1&, KERNEL==&eth*&, NAME=&eth3&将这个/etc/udev/rules.d/70-persistent-net.rules
  删除,重启,网卡eth0成功启动,并重新生成/etc/udev/rules.d/70-persistent-net.rules文件
  VMWare克隆或复制Linux虚拟机后eth0找不到的解决方案现象描述:
  最近装了虚拟机系统是 Fedora,为了以后使用方便对虚拟机进行克隆或复制。当使用克隆后的虚拟机
  时发现原来在基本系统中的网 卡eth0到了新系统却没有了,使用ifconfig -a会发现只有eth1。因为基本系
  统的网络相关配置都是基于eth0的,eth1没有网络相关的 配置,此时要正常该虚拟机中的网络,只有添加
  eth1的网络配置,这样每次都要修改网卡配置在做多Linux系统测试的时候很不方便。更进一步,如果基于
  此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1(第二次克隆会变成eth2),
  dmesg却显示内核只识别到网卡eth0。
  原因分析:
  很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在
  Debian etch中,udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则
  脚本中。而VMware会自动生 成虚拟机的mac地址。这样,由于基本系统的虚拟机已经记录了该虚拟机的网
  卡mac地址对应于网卡eth0,在克隆出的虚拟机中由于mac地址发生改 变,udev会自动将该mac对应于网
  卡eth1。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,
  而其 实kernel仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。
  解决方案:
  网络搜索发现在Debian etch下,udev将mac与网卡名称的对应关系保存在/etc/udev/rules.d
  /z25_persistent-net.rules中,在克隆出的虚拟机中只要删除跟NAME=&eth0&P相关的行并重启系统即可。例
  如在 Debian etch中删除如下两行:# PCI device 0&0(pcnet32)SUBSYSTEM==&
  net&,DRIVERS==&?*&,ATTRS{address}==&00:0c:29:4c:46:01&P,NAME=&eth0&P
  在我的Fedora 下修改/etc/udev/rules.d 下的 70-persistent-net.rules 文件。
  删除# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
  SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}==&
  00:0c:29:ad:06:2a&,ATTR{type}==&1&P, KERNEL==&eth*&, NAME=&eth0&P
  然后把eth1对应的哪一行的&eth1&P修改为&eth0&P即可。
  另外一种方法是:把里面的内容都删除,然后重新启动,系统也会重新发现网卡硬件,重新产生该文
  VMWare克隆或复制Linux虚拟机后无法上网的解决
  我拷贝了过来的Linux虚拟机无法上网,我用ifconfig命令查询了一下发现只有eth1和lo设备,没有eth0
  。于是我在Google上搜索了一下,找到了下面这篇文章
  (http://blog.chinaunix.net/u3/97076/showart_2015984.html)。《VMWare克隆或复制Linux虚拟机后
  eth0找不到的解决方案》现象描述:最近装了虚拟机系统是 fedora9,为了以后使用方便对虚拟机进行克
  隆或复制。当使用克隆后的虚拟机时发现原来在基本系统中的网卡eth0到了新系统却没有了,使用 ifconfig
  -a会发现只有eth1。因为基本系统的网络相关配置都是基于eth0的,eth1没有网络相关的配置,此时要正
  常该虚拟机中的网络,只有添加eth1的 网络配置,这样每次都要修改网卡配置在做多Linux系统测试的时候
  很不方便。更进一步,如果基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一 次都会自动加1
  (第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。原因分析:很多Linux distribution使
  用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在Debian etch中,udev会在系
  统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而VMware会自动生
  成虚拟机的 mac地址。这样,由于基本系统的虚拟机已经记录了该虚拟机的网卡mac地址对应于网卡eth0
  ,在克隆出的虚拟机中由于mac地址发生改变,udev会 自动将该mac对应于网卡eth1。以此类推,udev会
  记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而其实kernel 仅仅只识别到
  一张网卡,跟网卡名相关的网络配置也未发生任何变化。解决方案:网络搜索发现在Debian etch下,udev
  将mac与网卡名称的对应关系保存在/etc/udev/rules.d/z25_persistent-net.rules中,在 克隆出的虚拟机中
  只要删除跟NAME=&eth0&相关的行并重启系统即可。例如在Debian etch中删除如下两行:# PCI device
  0x0(pcnet32)SUBSYSTEM==&net&,DRIVERS==&?*&,ATTRS{address}
  ==&00:0c:29:4c:46:01&,NAME=&eth0& 在我的fedora9 下修改/etc/udev/rules.d 下的 70-persistent-
  net.rules 文件 删除# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by
  anaconda)SUBSYSTEM==&net&, ACTION==&add&, DRIVERS==&?*&, ATTR{address}
  ==&00:0c:29:ad:06:2a&, ATTR{type}==&1&, KERNEL==&eth*&, NAME=&eth0&然后把eth1对应的哪一行
  的&eth1&修改为&eth0&即可。另外一种方法是:把里面的内容都删除,然后重新启动,系统也会重新发现
  网卡硬件,重新产生该文件。这里补充一点:用下面命令来实现上述第二种方法也是一样的:cd
  /etc/udev/rules.dsudo rm *-net.rules //删除sudo reboot本人在用上述方法操作之后,再用ifconfig查看,
  确实找到了eth0设备,但没有ip地址。接下来用ifconfig命令设置ip地址,一些相关命令如下:ifconfig eth0
  192.168.0.10 将采用默认子网掩码ifconfig eth0 192.168.0.10 netmask 255.255.255.252 (手动定义子
  网掩码)(重启后无效)ifconfig eth0 down(停用网卡)ifconfig eth0 up(激活网卡)service network restart(重
  启网络服务)/etc/rc.d/init.detwork restart(同上)我用ifconfig eth0 192.168.0.10 netmask
  255.255.255.252 设置完ip,然后执行service network restart。系统提示:eth0已有的MAC地址和系统要
  设置的不符,设置MAC地址失败。因为网卡配置信息保存在/etc/sysconfigetwork-scripts/ifcfg-eth0配置
  文件中,所以就去看看它吧。文件的基本内容如下:DEVICE=eth0(哪张网卡)
  ONBOOT=yesBOOTPROTO=static(静态ip状态设置)BOOTPROTO=dhcp(dhcp获取)
  IPADDR=192.168.1.8(静态ip地址)NETMASK=255.255.255.0GATEWAY=192.168.1.1(网关)
  HWADDR=00:0C:29:96:38:F8(修改mac地址)(永久有效)我把文件的内容进行了删减,只留下
  DEVICE=eth0BOOTPROTO=dhcpHWADDR=00:0C:29:96:38:F8(修改为提示信息中指出的系统期望赋给
  eth0的MAC)ONBOOT=yes重启Linux后可以正常上网了。
上一篇: 下一篇:persistent organic pollutant
[p?'s?st?nt ?r'ɡaen?k p?'lutn:t]
持续性有机污染物
大家都在背:
1. 斯德哥尔摩公约
重要国际公约如:斯德哥尔摩公约(stockholm convention on persistent organic pollutants)、奥斯陆-巴黎公约(oslo and paris convent.
- 基于26个网页
1. 难降解有机污染物
有关环... ... organic pollutants 有机物污染 persistent organic pollutants 难降解有机污染物 pharmaceutical wastes 医药废物.
- 基于277个网页
2. 持久性有机污染物
持久性有机污染物( Persistent Organic Pollutants)简称POPs,是指具有持久性、生物蓄积性、半挥发性和长距离迁移性及高毒性,能 …
- 基于99个网页
0){var rand = parseInt(Math.random() * (000)+100000);top.location.href='/'+encodeURIComponent(document.getElementById('s').value.trim().replace( / /g, '_'))+'?renovate='+}else{top.location.href='/'+encodeURIComponent(document.getElementById('s').value.trim().replace( / /g, '_'));};}" action="/">
查过的词自动加入生词本
Tip:此功能设置只能在登录状态下生效
persistent organic pollutant
需要改进的内容:
单词大小写
其他(请在下面补充描述)
错误描述:
您还可在这里补充说明下 O(∩_∩)O~
方便的话,请您留下一种联系方式,便于问题的解决:2015考研热门话题
考研网地方站[原]Android持久化保存cookie - 推酷
[原]Android持久化保存cookie
在解析网页信息的时候,需要登录后才能访问,所以使用httpclient模拟登录,然后把cookie保存下来,以供下一次访问使用,这时就需要持久化cookie中的内容。
在之前先科普一下基础知识:
什么是Cookies?
Cookies是一些小文件,它们被创建在客户端的系统里,或者被创建在客户端浏览器的内存中(如果是临时性的话)。用它可以实现状态管理的功能。我们可以存储一些少量信息到可以短的系统上,以便在需要的时候使用。最有趣的事情是,它是对用户透明的。在你的web应用程序中,你可以到处使用它,它极其得简单。Cookies是以文本形式存储的。如果一个web应用程序使用cookies,那么服务器负责发送cookies,客户端浏览器将存储它。浏览器在下次请求页面的时候,会返回cookies给服务器。最常用的例子是,使用一个cookie来存储用户信息,用户的喜好,“记住密码”操作等。Cookies有许多优点,当然也有许多缺点。我将在接下来讲述。
Cookies是如何创建的?
当一个客户端向服务器发出请求,服务器发送cookies给客户端。而相同的cookies可以被后续的请求使用。例如,如果将Session ID作为cookies存储。当一个客户端首次向web服务器请求页面,服务器生成Session ID,并将其作为cookies发送往客户端。
现在,所有来自相同客户端的后续请求,它将使用来自cookies的Session ID,就像下面这幅图片展示的那样。
浏览器和web服务器以交换cookies信息来作为响应。对不同的站点,浏览器会维护不同的cookies。如果一个页面需要cookies中的信息,当某个URL被“点击”,首先浏览器将搜索本地系统的cookies的信息,然后才转向服务器来获得信息。
Cookies的优势
下面是使用cookies的主要优势:
(1)&&&&实现和使用都是非常简单的
(2)&&&&由浏览器来负责维护发送过来的数据(cookies内容)
(3)&&&&对来自多个站点的cookies来讲,浏览器自动管理它们
Cookies的劣势
下面是cookies的主要劣势:
(1)&&&&它以简单的文本格式来存储数据,所以它一点也不安全
(2)&&&&对于cookies数据,有大小限制(4kB)
(3)&&&&Cookies最大数目也有限制。主流浏览器提供将cookies的个数限制在20条。如果新cookies到来,那么老的将被删除。有些浏览器能支持到300条的cookies数。
(4)&&&&我们需要配置浏览器,cookies将不能工作在浏览器配置的高安全级别环境下。
什么是持久化的和非持久化的Cookies
我们可以将cookies分成两类:
(1)&&&&持久化的cookies
(2)&&&&非持久化的cookies
持久化的cookies :这可以被称为永久性的cookies,它被存储在客户端的硬盘内,直到它们失效。持久化的cookies应该被设置一个失效时间。有时,它们会一直存在直到用户删除它们。持久化的cookies通常被用来为某个系统收集一个用户的标识信息。
非持久化cookies :也可以被称之为临时性的cookies。如果没有定义失效时间,那么cookie将会被存储在浏览器的内存中。我上面展示的例子就是一个非持久的cookies。
修改一个持久化的cookies与一个非持久化的cookies并没有什么不同。它们唯一的区别是——持久化的cookies有一个失效时间的设置。
Cookie持久化
HttpClient可以和任意物理表示的实现了CookieStore接口的持久化cookie存储一起使用。默认的CookieStore实现称为BasicClientCookie,这是凭借java.util.ArrayList的一个简单实现。在BasicClientCookie对象中存储的cookie当容器对象被垃圾回收机制回收时会丢失。如果需要,用户可以提供更复杂的实现。
下载着重介绍在安卓中如何利用httpclient来实现对cookie的持久化操作:
一、请求网络获取cookie
先看一下下面的代码:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(&&);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
List&Cookie& cookies = httpclient.getCookieStore().getCookies();
Post模拟登录
HttpPost httpPost = new HttpPost(url);
List&NameValuePair& formparams = new ArrayList&NameValuePair&();
formparams.add(new BasicNameValuePair(&id&, userid));
formparams.add(new BasicNameValuePair(&passwd&, passwd));
UrlEncodedFormE
entity = new UrlEncodedFormEntity(formparams, mobileSMTHEncoding);
} catch (UnsupportedEncodingException e1) {
httpPost.setEntity(entity);
httpPost.setHeader(&User-Agent&, userAgent);
HttpResponse response = httpClient.execute(httpPost);
二、保存cookie
保存cookie有两种方式一种是数据库,另一种是SharedPreferences,其中http://blog.csdn.net/junjieking/article/details/7658551是使用数据库来保存的,这里我是使用SharedPreferences保存。
package com.smthbest.smth.
import java.util.L
import android.content.C
import android.content.SharedP
import android.text.TextU
import android.util.L
import org.apache.http.client.CookieS
import org.apache.http.cookie.C
import java.io.ByteArrayInputS
import java.io.ByteArrayOutputS
import java.io.ObjectInputS
import java.io.ObjectOutputS
import java.util.ArrayL
import java.util.D
import java.util.L
import java.util.L
import java.util.concurrent.ConcurrentHashM
public class PersistentCookieStore implements CookieStore {
private static final String LOG_TAG = &PersistentCookieStore&;
private static final String COOKIE_PREFS = &CookiePrefsFile&;
private static final String COOKIE_NAME_STORE = &names&;
private static final String COOKIE_NAME_PREFIX = &cookie_&;
private boolean omitNonPersistentCookies =
private final ConcurrentHashMap&String, Cookie&
private final SharedPreferences cookieP
* 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());
public void addCookie(Cookie cookie) {
if (omitNonPersistentCookies && !cookie.isPersistent())
String name = cookie.getName() + cookie.getDomain();
// Save cookie into local store, or remove if expired
if (!cookie.isExpired(new Date())) {
cookies.put(name, cookie);
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)));
public void 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);
// Clear cookies from local store
cookies.clear();
public boolean clearExpired(Date date) {
boolean clearedAny =
SharedPreferences.Editor prefsWriter = cookiePrefs.edit();
for (ConcurrentHashMap.Entry&String, Cookie& entry : cookies.entrySet()) {
String name = entry.getKey();
Cookie cookie = entry.getValue();
if (cookie.isExpired(date)) {
// Clear cookies from local store
cookies.remove(name);
// Clear cookies from persistent store
prefsWriter.remove(COOKIE_NAME_PREFIX + name);
// We've cleared at least one
clearedAny =
// Update names in persistent store
if (clearedAny) {
prefsWriter.putString(COOKIE_NAME_STORE, TextUtils.join(&,&, cookies.keySet()));
return clearedA
public List&Cookie& getCookies() {
return new ArrayList&Cookie&(cookies.values());
* Will make PersistentCookieStore instance ignore Cookies, which are non-persistent by
* signature (`Cookie.isPersistent`)
* @param omitNonPersistentCookies true if non-persistent cookies should be omited
public void setOmitNonPersistentCookies(boolean omitNonPersistentCookies) {
this.omitNonPersistentCookies = omitNonPersistentC
* Non-standard helper method, to delete cookie
* @param cookie cookie to be removed
public void deleteCookie(Cookie cookie) {
String name = cookie.getName();
cookies.remove(name);
SharedPreferences.Editor prefsWriter = cookiePrefs.edit();
prefsWriter.remove(COOKIE_NAME_PREFIX + name);
* Serializes Cookie object into String
* @param cookie cookie to be encoded, can be null
* @return cookie encoded as String
protected String encodeCookie(SerializableCookie cookie) {
if (cookie == null)
ByteArrayOutputStream os = new ByteArrayOutputStream();
ObjectOutputStream outputStream = new ObjectOutputStream(os);
outputStream.writeObject(cookie);
} catch (Exception e) {
return byteArrayToHexString(os.toByteArray());
* Returns cookie decoded from cookie string
* @param cookieString string of cookie as returned from http request
* @return decoded cookie or null if exception occured
protected Cookie decodeCookie(String cookieString) {
byte[] bytes = hexStringToByteArray(cookieString);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
Cookie cookie =
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
cookie = ((SerializableCookie) objectInputStream.readObject()).getCookie();
} catch (Exception exception) {
Log.d(LOG_TAG, &decodeCookie failed&, exception);
* Using some super basic byte array &-& hex conversions so we don't have to rely on any
* large Base64 libraries. Can be overridden if you like!
* @param bytes byte array to be converted
* @return string containing hex values
protected String byteArrayToHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 2);
for (byte element : bytes) {
int v = element & 0
if (v & 16) {
sb.append('0');
sb.append(Integer.toHexString(v));
return sb.toString().toUpperCase(Locale.US);
* Converts hex values from strings to byte arra
* @param hexString string of hex-encoded values
* @return decoded byte array
protected byte[] hexStringToByteArray(String hexString) {
int len = hexString.length();
byte[] data = new byte[len / 2];
for (int i = 0; i & i += 2) {
data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) && 4) + Character.digit(hexString.charAt(i + 1), 16));
使用PersistentCookieStore来存储cookie,首先最好把
PersistentCookieStore放在Application获取其他的地方,取得唯一实例,保存cookie是在登录成功后,从下面代码获取保存。
PersistentCookieStore myCookieStore = App.getInstance().getPersistentCookieStore();
List&Cookie& cookies = httpClient.getCookieStore().getCookies();
for (Cookie cookie:cookies){
myCookieStore.addCookie(cookie);
三、cookie的使用
PersistentCookieStore cookieStore = new PersistentCookieStore(SmthBestApp.getInstance().getApplicationContext());
httpClient.setCookieStore(cookieStore);
HttpResponse response = httpClient.execute(httpget);
这样就可以免再次登录了。
转载请标明出处
欢迎有识之士加入我们的技术交流群:
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见

我要回帖

更多关于 内盘和外盘是什么意思 的文章

 

随机推荐