开发手册 欢迎您!
软件开发者资料库

Apache HttpClient - Cookies管理

Apache HttpClient Cookies管理 - 从基本到高级概念的简单简单步骤学习Apache HttpClient,其中包括概述,环境设置,Http获取请求,Http Post请求,响应处理程序,关闭连接,中止请求,拦截器,用户身份验证,使用代理,代理身份验证,基于表单的登录,Cookie管理,多线程,自定义SSL上下文,分段上传。

Cookie是存储在客户端计算机上的文本文件,用于各种信息跟踪目的.

HttpClient支持您可以创建和管理cookie的cookie.

创建cookie

按照以下步骤使用HttpClient库创建cookie.

步骤1  - 创建Cookiestore对象

CookieStore 接口表示Cookie对象的抽象存储.您可以通过实例化 BasicCookieStore 类来创建cookie存储,这是此接口的默认实现.

//Creating the CookieStore objectCookieStore cookieStore = new BasicCookieStore();

第2步 - 创建ClientCookie对象

除了cookie的功能外,ClientCookie还可以获取原始cookie在服务器中.您可以通过实例化 BasicClientCookie 类来创建客户端cookie.对于此类的构造函数,您需要传递您希望存储在该特定cookie中的键值对.

//Creating client cookieBasicClientCookie clientCookie = new BasicClientCookie("name","Raju");

步骤3  - 将值设置为cookie

对于客户端cookie,您可以设置/删除路径,值,版本,有效期,域名,评论和属性使用相应的方法.

Calendar myCal = new GregorianCalendar(2018, 9, 26);Date expiryDate = myCal.getTime();clientcookie.setExpiryDate(expiryDate);clientcookie.setPath("/");clientcookie.setSecure(true);clientcookie.setValue("25");clientcookie.setVersion(5);

步骤4  - 将cookie添加到cookie商店

您可以使用

将所需的cookie添加到 Cookiestore .

//Adding the created cookies to cookie storecookiestore.addCookie(clientcookie);

示例

以下示例演示了如何创建cookie并将其添加到cookie商店.在这里,我们通过设置域名和路径值创建了一个cookie商店,一堆cookie,并将这些添加到cookie商店.

import org.apache.http.client.CookieStore;import org.apache.http.impl.client.BasicCookieStore;import org.apache.http.impl.cookie.BasicClientCookie;public class CookieHandlingExample {      public static void main(String args[]) throws Exception{            //Creating the CookieStore object      CookieStore cookiestore = new BasicCookieStore();       //Creating client cookies      BasicClientCookie clientcookie1 = new BasicClientCookie("name","Raju");      BasicClientCookie clientcookie2 = new BasicClientCookie("age","28");      BasicClientCookie clientcookie3 = new BasicClientCookie("place","Hyderabad");      //Setting domains and paths to the created cookies      clientcookie1.setDomain(".sample.com");      clientcookie2.setDomain(".sample.com");      clientcookie3.setDomain(".sample.com");      clientcookie1.setPath("/");      clientcookie2.setPath("/");      clientcookie3.setPath("/");       //Adding the created cookies to cookie store      cookiestore.addCookie(clientcookie1);      cookiestore.addCookie(clientcookie2);      cookiestore.addCookie(clientcookie3);   }}

检索cookie

您可以将cookie添加到cookie商店使用 asicCookieStore 类的 getCookies()方法.此方法返回一个列表,其中包含cookie商店中的所有cookie.

您可以使用Iterator打印cookie商店的内容,如下所示 :

//Retrieving the cookiesList list = cookieStore.getCookies();//Creating an iterator to the obtained listIterator it = list.iterator();while(it.hasNext()) {   System.out.println(it.next());}

示例

以下示例演示了如何从Cookie存储中检索Cookie.在这里,我们将一堆cookie添加到cookie商店并将其检索回来.

import org.apache.http.client.CookieStore;import org.apache.http.impl.client.BasicCookieStore;import org.apache.http.impl.cookie.BasicClientCookie;public class CookieHandlingExample {    public static void main(String args[]) throws Exception{            //Creating the CookieStore object      CookieStore cookiestore = new BasicCookieStore();            //Creating client cookies      BasicClientCookie clientcookie1 = new BasicClientCookie("name","Raju");      BasicClientCookie clientcookie2 = new BasicClientCookie("age","28");      BasicClientCookie clientcookie3 = new BasicClientCookie("place","Hyderabad");      //Setting domains and paths to the created cookies      clientcookie1.setDomain(".sample.com");      clientcookie2.setDomain(".sample.com");      clientcookie3.setDomain(".sample.com");      clientcookie1.setPath("/");      clientcookie2.setPath("/");      clientcookie3.setPath("/");       //Adding the created cookies to cookie store      cookiestore.addCookie(clientcookie1);      cookiestore.addCookie(clientcookie2);      cookiestore.addCookie(clientcookie3);   } }

输出

执行时,此程序生成以下输出和减号;

[version: 0][name: age][value: 28][domain: .sample.com][path: /][expiry: null][version: 0][name: name][value: Raju][domain: my.example.com][path: /][expiry:null][version: 0][name: place][value: Hyderabad][domain: .sample.com][path:/][expiry: null]