« Javaでクッキーを使えるHTTPクライアント(2) | トップページ | どうしてJaveでCookieが取得できないんだろう?(2) »

2010年8月 5日 (木)

どうしてJaveでCookieが取得できないんだろう?(1)

 Javaは数多くのAPIが用意されており、ネットワーク関連においてもそれは大いに言えることです。

HTTPでWebサイトのページを取得するのも、

URL url = new URL("http://www.google.co.jp/");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
InputStream in = con.getInputStream();

これでストリームからHTMLページを読み込むことができます。

 単純にHTMLを読み込むだけならこの方法で済みますが、しかし最近のWebサイトはCookieを使ってMyページや履歴を管理するといったことをしています。Googleのトップページを取得するよりも、自分の管理ページなどにアクセスして操作できた方がプログラムの幅も広がるというものです。

 ということで、WebへのアクセスにはCookieの処理が必要不可欠となります。今回の記事ではJavaに搭載されている標準のCookie処理機構を使ってWebページへのログイン処理について触れていきます。と同時に、現在のJavaに潜むCookieが取得できないという謎のバグについても追求していき、その原因と解決方法を紹介したいと思います。

HttpURLConnectionCookieManager

 Javaには標準でCookieを自動で処理してくれる機構が備わっています。これはJava6.0から導入されたもので、代表的なクラスとインタフェースは
 CookieHandler
 CookieManager
 CookiePolicy
 CookieStore
です。

 これらは普段意識せずとも自動で使われており、もしも細かい設定やデータが欲しいというときには事細かに自分で実装し直すことができる優れものとなっています。その細かい設定については省略して、まずは使い方、そして実際にCookieの取得と送信を自動でやってくれている様子を次回見たいと思います。

 ちなみに、各クラスとインタフェースの役割はこちら

CookieHandler
どのCookie管理マネージャを使っているのか取得したり、切り替えなどを行う機能を提供

CookieManager
Cookie管理をする本体で、クッキーを実際に保存したり選択したりするクラス

CookiePolicy
Cookieを受け入れるかどうかのルールを定義してある、CookieManagerの手下1

CookieStore
Cookieが実際に格納される場所、CookieManagerの手下2

 それではまた次回

« Javaでクッキーを使えるHTTPクライアント(2) | トップページ | どうしてJaveでCookieが取得できないんだろう?(2) »

Java」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: どうしてJaveでCookieが取得できないんだろう?(1):

« Javaでクッキーを使えるHTTPクライアント(2) | トップページ | どうしてJaveでCookieが取得できないんだろう?(2) »