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

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のクラスやメソッドを紹介して、ブラウザのログイン処理を代替させてみたいと思います。

2009年4月10日 (金)

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

やりたいこと:
Javaアプリケーションでどこかのサイトへログイン、通信する

そのために必要なもの:
クッキーの処理機能を備えたHTTPクライアント


 Javaでクッキーを自動で処理してくれるHTTPクライアントを用意したいと思い、色々調べたことを書きたいと思います。

 まあ、結果的に言うと既にJavaベースで動くクッキーを扱えるHTTPクライアントが数多く作られていて、その中でも Jakarta Commons HttpClient というのがなかなかいい感じです。

Jakarta Commons HttpClient

 クッキーを自動で処理してくれる!!

 POSTやGETリクエストをURLConnectionやSocketなんかで送ることは簡単ですが、サーバから帰ってくるCookieを読み取り、クッキーの追加、選択などをして、また次のリクエストにはクッキー付きで送るといった作業はかなり面倒ですね。
 クッキーの扱いもHTMLプロトコルをちゃんと勉強しないといけないし、いろいろな属性値の意味や値も考えなければならなくなるだろうし、しかもそれをSocketでひたすら組もうというのはなかなか、楽しそうではあります。
 ですが今回はネット上のサイトでログイン処理とその他の通信を実現することを目的としているので、HTTPクライアントを作るのは別の機会ということに。

 ということで次回からちょこっとこのHttpClientの使い方をメモっておくことにします。


※10/04/27 リンクが切れていたので修正

.