Cookie是存储在客户端计算机上的文本文件,用于各种信息跟踪目的.
HttpClient支持您可以创建和管理cookie的cookie.
按照以下步骤使用HttpClient库创建cookie.
CookieStore 接口表示Cookie对象的抽象存储.您可以通过实例化 BasicCookieStore 类来创建cookie存储,这是此接口的默认实现.
//Creating the CookieStore object CookieStore cookieStore = new BasicCookieStore();
除了cookie的功能外,ClientCookie还可以获取原始cookie在服务器中.您可以通过实例化 BasicClientCookie 类来创建客户端cookie.对于此类的构造函数,您需要传递您希望存储在该特定cookie中的键值对.
//Creating client cookie BasicClientCookie clientCookie = new BasicClientCookie("name","Raju");
对于客户端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);
您可以使用
将所需的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","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商店使用 asicCookieStore 类的 getCookies()方法.此方法返回一个列表,其中包含cookie商店中的所有cookie.
您可以使用Iterator打印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","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]