[応用機能]HTTP

アプリケーション開発において、WebサーバとのHTTP通信が必要とされる場合があります。

HTTP通信する機能を抽象化したのが、HttpClientFactoryです。

また、通信相手となるWebサーバの代替となるのがプロキシサービスです。

関連するパッケージは、以下です。

アプリケーション向けインタフェース HttpClientFactory

アプリケーション向けインタフェースHttpClientFactoryは、URLを隠ぺいしてアクション名でHTTPリクエストを抽象化したHttpRequestを提供します。
また、サーバとのセッションを維持し、Cookieなどのクライアントで保持する情報を持つHttpClientを生成します。
HttpClientを使って、HttpRequestをサーバに送信すると応答としてHttpResponseが取得できます。

HttpClientFactoryを使った簡単なアプリケーションのサンプルを示します。

  1. import jp.ossc.nimbus.core.ServiceManagerFactory;
  2. import jp.ossc.nimbus.service.http.HttpClientFactory;
  3. import jp.ossc.nimbus.service.http.HttpClient;
  4. import jp.ossc.nimbus.service.http.HttpReuqest;
  5. import jp.ossc.nimbus.service.http.HttpResponse;
  6. // HttpClientFactoryを取得
  7. HttpClientFactory factory = (HttpClientFactory)ServiceManagerFactory.getServiceObject("HttpClientFactory");
  8. // クライアントを生成する
  9. HttpClient client = factory.createHttpClient();
  10. // リクエストを生成する
  11. HttpRequest request = factory.createRequest("Login");
  12. // リクエストパラメータを設定する
  13. request.setParameter("id", "hoge");
  14. request.setParameter("password", "1234_AbcD");
  15. // リクエストして、応答を受け取る
  16. HttpResponse response = client.executeRequest(request);
  17. // 応答のステータスコードを判定する
  18. if(reponse.getStatusCode() == 200){
  19. // 応答オブジェクトを取得する
  20. System.out.println(response.getObject());
  21. }

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryServiceJakarta Commons HttpClientを使った実装

プロキシサービス

HttpClientFactoryの呼び出し相手となるWebサーバの代替となるテスト用サービスです。
ProxyServerServiceが、特定のポートで待ち受けます。
そのポートにアクセスしたソケットをQueueHandlerContainerを使って、非同期処理して、Processインタフェースを実装したサービスに処理を委譲します。

ProxyServerService向けインタフェース Process

ProxyServerService向けインタフェース Processの実装サービスは、ProxyServerServiceにアクセスされたソケットの入力ストリームを読み取り、処理を行い出力ストリームに結果を書き出します。

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.http.proxy.TestHttpProcessServiceHTTPリクエストを読み込み、HTTPレスポンスを返す

サンプルは、以下。