Apache-httpclient-cookies-management
提供:Dev Guides
Apache HttpClient-クッキー管理
Cookieは、クライアントコンピューターに保存されるテキストファイルであり、さまざまな情報追跡目的で保持されます。
HttpClientは、Cookieを作成および管理できるCookieのサポートを提供します。
クッキーを作成する
以下の手順に従って、HttpClientライブラリを使用してCookieを作成します。
ステップ1-Cookiestoreオブジェクトを作成する
*CookieStore* インターフェースは、Cookieオブジェクトの抽象ストアを表します。 このインターフェイスのデフォルト実装である *BasicCookieStore* クラスをインスタンス化することにより、Cookieストアを作成できます。
//Creating the CookieStore object
CookieStore cookieStore = new BasicCookieStore();
ステップ2-ClientCookieオブジェクトを作成する
Cookieの機能に加えて、ClientCookieはサーバー内の元のCookieを取得できます。 BasicClientCookie クラスをインスタンス化することにより、クライアントCookieを作成できます。 このクラスのコンストラクターには、特定のCookieに保存するキーと値のペアを渡す必要があります。
//Creating client cookie
BasicClientCookie 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ストアに追加する
*BasicCookieStore* クラスの* addCookie()*メソッドを使用して、Cookieストアに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","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);
}
}
クッキーを取得する
*asicCookieStore* クラスの* getCookies()*メソッドを使用して、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","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]