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

Java 9のHTTP/2クライアントAPIとは?特徴と基本的な使い方を解説

Java 9で導入されたHTTP/2クライアントAPIとは

Java 9では、新しいHTTP/2クライアントAPIが導入されました。従来のHTTP/1.1と比較してパフォーマンスが大きく向上している点が特徴で、サーバープッシュ(サーバー側からのプッシュイベント)にも対応しています。これにより、Webサイトへのアクセスがより効率的かつ高速になり、快適なブラウジングが可能になります。

このHTTP/2クライアントは、jdk.incubator.httpclientという「インキュベーターモジュール」として提供されています。インキュベーターモジュールとは、まだ正式仕様が確定していない実験段階のモジュールのことであり、将来のJavaバージョンでAPIが変更される可能性があることを意味します。すべての公開APIは、jdk.incubator.httpパッケージにまとめられています。

JShellでHTTP/2クライアントモジュールを読み込む方法

HTTP/2クライアントを利用するには、インキュベーターモジュールを明示的に読み込む必要があります。JShellを使用する場合は、以下のように--add-modulesオプションでhttpclientモジュールを指定して起動します。

C:\>jshell -v --add-modules jdk.incubator.httpclient
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

使用例:HTTPリクエストの送信からレスポンス取得まで

次に、JShell上でHTTP/2クライアントを使って実際にリクエストを送信する例を見てみましょう。クライアントの生成、リクエストの構築、レスポンスの取得という一連の流れを確認できます。

jshell> import jdk.incubator.http.*;

jshell> HttpClient httpClient = HttpClient.newHttpClient();
httpClient ==> jdk.incubator.http.HttpClientImpl@534df152
| created variable httpClient : HttpClient

jshell> HttpRequest httpRequest = HttpRequest.newBuilder().uri(new URI("https://www.google.com")).GET().build();
httpRequest ==> https://www.google.com GET
| created variable httpRequest : HttpRequest

jshell> HttpResponse httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandler.asString());
httpResponse ==> jdk.incubator.http.HttpResponseImpl@609cd4d8
| created variable httpResponse : HttpResponse

jshell> System.out.println(httpResponse.statusCode());
403

jshell> System.out.println(httpResponse.body());
Apache HTTP Server Test Page powered by CentOS
Testing 123..

コードのポイント

  • HttpClient.newHttpClient():デフォルト設定のHTTPクライアントを生成します。
  • HttpRequest.newBuilder():ビルダーパターンでURIとGETメソッドを指定し、リクエストを構築します。
  • httpClient.send():リクエストを送信し、レスポンスを同期的に受け取ります。第2引数にはHttpResponse.BodyHandler.asString()を渡すことで、レスポンスボディを文字列として扱えます。
  • statusCode() / body():それぞれステータスコードとレスポンスボディを取得するためのメソッドです。

なお、この実行例ではステータスコード403が返されていますが、これは接続先サーバーの状態によるものであり、API自体の動作には問題ありません。このようにJava 9のHTTP/2クライアントを使えば、わずか数行のコードでHTTP通信を簡潔に実装できることが分かります。

  1. JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説

    StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T

  2. HTTP/2とは何か?仕組みと主な機能・メリットを徹底解説

    この20年間で、ワールドワイドウェブ(WWW)は目覚ましい進化を遂げてきました。改良され続けるWeb技術には、既存の通信・ファイル転送技術であるHTTPよりも、より高速で優れたソリューションやプロトコルが求められています。従来のHTTPは、すでに技術的な限界に近づきつつあるのです。 HTTP/2とは何か? HTTP/2とは、ワールドワイドウェブで使われる基盤プロトコル「HTTP(Hypertext Transfer Protocol)」の最新バージョンです。2015年2月に正式承認されました。これは、元祖HTTPの登場から実に約20年後のことです。 HTTP/2はページの読み込み時間を短縮し、