JSPで行こう!

HttpClient

HttpClient について

HttpClient について補足しておきます。
HttpClient は言わば、WEBブラウザの動作をサーバー側で行うライブラリです。
普通、サーバーはブラウザからのリクエストを受けて、処理した結果を返します。
データベースなら、JDBC でSQLを発行してその結果を返せば良いですが、別のWEBサーバーに
リクエストを飛ばして、その結果を最初にリクエストを受けた先に返すという場合、
別のサーバーへの問い合わせには、WEBブラウザと同じ働きをする必要があります。
"ブラウザと同じ働き"と言っても、実装しようとするとそう簡単ではありません。
その為のライブラリが HttpClient です。

最近では、Java11 から標準ライブラリとして追加されています。
それ以前では、いろいろあるようですが良く知られたものとして Apache Software Foundation のものがあります。

ここで、補足しようと思ったのは、同じ Apache の HttpClient でもバージョンによって使い方がかなり違うという事です。
この章の執筆時点では、Ver 4.5 でしたが、仕様がそれ以前とは大きく違っていて、ネットの情報に翻弄された記憶があります。
今書いている時点で、Ver 5.1.1 が最新です。
案の定、今回も大きく仕様が変わっています。

では、何を選択したら良いかと言えば、迷わず最新のバージョンを使いましょう。
4.5 では新しい http の仕様に追随できません。ネットで検索してもまだ古いバージョンの使用例が上位で検索されてしまうので、混乱しないようにしてください。

HttpClient 5.1 の大きな変更点は、非同期処理に対応している事です。
というより、むしろ非同期処理が標準になっています。

確かに、WEBブラウザでは画面が固まらないように、非同期処理はあたり前ですが、サーバーサイドの処理で、
非同期処理が求められる事は、そう多くは無いと思います。むしろありがたく無いはずです。
そこで、5.1 でも 4.5 との互換の為にクラスが用意されています。(Classic)
ですので、4.5 で書いたソースでもかなり通ります。
ただ、どうしても通らない部分も出ますので、そこは修正が必要です。
大きく変わったなと思ったのは、インポートのクラス名とレスポンスのステータスの取得です。
  // if(response.getStatusLine().getStatusCode() != 200 ){ // old ver 4.5
    if(response.getCode() != 200 ){  // ver 5.1
​
« 前頁 次頁 »