Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のHTTP/2クライアントAPIとは?HttpClient・HttpRequest・HttpResponseの3つの主要クラスを解説

Java 9におけるHTTP/2クライアントAPIの概要

HTTP/2は、従来のHTTPプロトコルの新しいバージョンです。HTTP/2の主な改善点は、サーバーとクライアント間でデータがどのようにフレーミングされ、転送されるかに焦点が当てられています。この新しいHTTP/2プロトコルでは、HTTPクライアント、リクエスト、レスポンスそれぞれに対して個別のクラスが定義されています。

新しいAPIを利用することで、HTTP接続の維持がより簡単になり、通信速度も向上します。さらに、サードパーティ製のライブラリに依存することなく、応答性の高いアプリケーションを構築できるようになりました。

HTTP接続を扱う3つのコアクラス

新しいAPIは、以下の3つのクラスを通じてHTTP接続を処理します。

  • HttpClient: リクエストの作成と送信を担当するクラスです。
  • HttpRequest: HttpClient経由で送信するリクエストを構築するために使用されます。
  • HttpResponse: 送信されたリクエストに対するレスポンスを保持します。

実装例:URLへのリクエスト送信とレスポンス取得

以下のコードスニペットでは、特定のURLにリクエストを送信し、そのレスポンスを受け取る方法を示しています。

// HttpClientオブジェクトを作成
HttpClient httpClient = HttpClient.newHttpClient();
System.out.println(httpClient.version());

// HTTPリクエストを構築
// 指定したURIに対するGETリクエストを作成
HttpRequest httpRequest = HttpRequest.newBuilder()
.uri(new URI("https://www.tutorialspoint.com/"))
.GET()
.build();

// リクエストヘッダーを取得して表示
Map<String, List<String>> headers = httpRequest.headers().map();
headers.forEach((k, v) -> System.out.println(k + " - " + v));

// リクエストを送信
HttpResponse httpResponse =
httpClient.send(httpRequest, HttpResponse.BodyHandler.asString());

// レスポンスボディを出力
System.out.println("Response: " + httpResponse.body());

まとめ

Java 9で導入されたHTTP/2クライアントAPIは、HttpClientでリクエストの送信を管理し、HttpRequestでリクエストを構築し、HttpResponseでレスポンスを受け取るという明確な役割分担が特徴です。これにより、外部ライブラリを使わずにモダンで効率的なHTTP通信を実装できるようになりました。

  1. Java 9 JShellの起動スクリプト(DEFAULT・JAVASE・PRINTING)の違いと使い方

    JShellは、Java 9で導入された対話型のJavaシェルツールです。コマンドラインプロンプトから起動でき、入力したコードをその場で評価して結果を即座に表示します。いわゆるREPL(Read-Evaluate-Print-Loop:読み込み→評価→表示→繰り返し)ツールとして動作するため、コード断片の動作確認やAPIの学習に非常に便利です。 起動スクリプトの指定方法(--startupフラグ) JShellでは、起動時にスクリプトを読み込むことで、あらかじめ定義済みのimport文や便利なメソッドを使える状態でセッションを開始できます。起動スクリプトを指定するには「--startup」フ

  2. Java 9のJShellで使える「/edit」コマンドの種類と使い方

    JShellは、Java 9で導入されたコマンドラインツールです。main()メソッドを用意しなくても、宣言・ステートメント・式をその場で評価できるのが大きな特徴です。さらに、JShellにはJShell Edit Padという簡易テキストエディタが組み込まれており、「/edit」コマンドで起動することで、入力済みのコードを手軽に編集できます。 /editコマンドの3つの形式 JShellで利用できる「/edit」コマンドには、次の3つの形式があります。 /edit /edit [ID] /edit [コード名] /edit:引数なしで実行すると、現在アクティブなすべてのコードがテキストエデ