Cookie是存储在客户端计算机上的文本文件,用于各种信息跟踪目的。
HttpClient
可以为创建和管理cookie
提供支持。
按照下面给出的步骤使用HttpClient
库创建cookie
。
第1步 - 创建Cookiestore对象
CookieStore
接口表示Cookie
对象的抽象存储。可以通过实例化BasicCookieStore
类来创建cookie存储,BasicCookieStore
类是此接口的默认实现。
//Creating the CookieStore object CookieStore cookieStore = new BasicCookieStore();
第2步 - 创建ClientCookie对象
除了cookie的功能之外,ClientCookie
还可以在服务器中获取原始cookie
。可以通过实例化BasicClientCookie
类来创建客户端cookie
。对于此类的构造函数,需要传递要在该特定cookie
中存储的键值对。
//Creating client cookie BasicClientCookie clientCookie = new BasicClientCookie("name","maxsu");
第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添加到存储区
可以使用BasicCookieStore
类的addCookie()
方法将cookie添加到存储区。
将所需的cookie
添加到Cookiestore
。
//Adding the created cookies to cookie store cookiestore.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","Maxsu"); 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); } }
可以使用asicCookieStore
类的getCookies()
方法将cookie添加到cookie存储中。此方法返回一个列表,其中包含cookie存储中的所有cookie。
可以使用迭代器打印cookie存储的内容,如下所示 -
//Retrieving the cookies List list = cookieStore.getCookies(); //Creating an iterator to the obtained list Iterator 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","Maxsu"); 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: Maxsu][domain: my.example.com][path: /][expiry: null] [version: 0][name: place][value: Hyderabad][domain: .sample.com][path: /][expiry: null]