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]