« 冷凍と冷蔵 | トップページ | どうしてJaveでCookieが取得できないんだろう?(1) »

2010年4月27日 (火)

Javaでクッキーを使えるHTTPクライアント(2)

 前回の記事からの続きです。
 前回はJavaで使えるHTTPクライアントとしてJakarta Commons HttpClientを紹介しました。
 というわけでこれからいろいろなインターネット上の会員サービスへログインしてみましょう。

 しかしちょっと待ってください。そもそもウェブサイト上でログインする、というのは具体的にはどのような処理が必要でしょうか? IDとパスワードを入力しログインボタンを押す、といった処理が思い浮かびますが、プログラムからログイン処理をするにはどうすればよいのでしょうか。

 なのでJavaプログラムを書く前に、ここでは具体的なログインの仕組みや、手続きについて調べたことを書いておきます。

ログインとは?

そもそもログインとは、ID,パスワードをサーバに送信しユーザを特定してもらうことです。
普通はIDとパスワードを入力して送信し終わると、次からは自分専用に用意されたページを利用できるようになります。

このときのサーバとクライアントのやり取りの図を以下に示します。

Sessionid480resize

 図のようにクライアントは、ログインサーバへHTTP(プロトコル)のPOSTメソッドというコマンドを使ってIDとパスワードを送信します。これは通常、Webページに入力フォームが用意してあり、ボタンを押すだけでお手軽に送信できるようになっているので、日ごろ意識することはありません。

 そしてサーバ側では、送られてきたIDとパスワードを確認し、それが正しければユーザへセッションIDを送ります。このセッションIDというものはIDとパスワードの代わりにユーザを特定するためのもので、ユーザは受け取ったセッションIDを保存しておきます。これは普段はブラウザが自動でやってくれています。

 このとき、セッションIDはクッキーと言う仕組みを用いてブラウザに保存されています。クッキーとはサイトごとにブラウザにデータを保存しておける領域のようなものです。ブラウザは保存しておいたセッションIDを次回から毎回Webページにアクセスするときに一緒にサーバへ送ります。これによりサーバ側は利用者が誰なのかを判別して、メンバー専用ページを表示したり、サービスの提供を行えるようになります。

 以上が現在広く利用されているWebサービスの典型的な形になります。
いずれもブラウザを介してWebページにアクセスしている時には深く意識しないものばかりですが、これらの処理をすべてJavaアプリケーションを通じて行うには、上記の処理すべてをコード上でで行わなければなりません。

 幸い、クッキーなどある程度自動で処理してくれるライブラリがすでに揃っており、Jakarta Commons HttpClientもその一つです。次回は実際にHttpClientのクラスやメソッドを紹介して、ブラウザのログイン処理を代替させてみたいと思います。

« 冷凍と冷蔵 | トップページ | どうしてJaveでCookieが取得できないんだろう?(1) »

Java」カテゴリの記事

Javaでクッキーを使えるHTTPクライアント(1-2)」カテゴリの記事

コメント

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

トラックバック


この記事へのトラックバック一覧です: Javaでクッキーを使えるHTTPクライアント(2):

« 冷凍と冷蔵 | トップページ | どうしてJaveでCookieが取得できないんだろう?(1) »