
HTTP Client API
JDK 11 で導入された HTTP クライアント API(JEP 321: HTTP Client API) は HTTP/1.1 と HTTP/2 をサポートしています(デフォルトでは HTTP/2 を優先し、対象サーバーが HTTP/2 をサポートしていない場合は、透過的に HTTP/1.1 にダウングレードする)。
HTTP クライアント API は以下のように使用します。
var client = HttpClient.newHttpClient(); var request = HttpRequest.newBuilder(URI.create("https://openjdk.org/")) .GET().build(); var response = client.send(request, HttpResponse.BodyHandlers.ofString()); assert response.statusCode() == 200; String htmlText = response.body();
詳細は以下を参照してください。
JDK 26 で、HTTPクライアント API に HTTP/3 サポートが追加されます。
HTTP/3 サポート
HTTP/3 は、HTTP/2 や HTTP/1.1 ほど広く導入されていないため、HTTP/3 はデフォルトのプロトコルバージョンにはなっていません。
以下のように明示的に優先プロトコルバージョンを指定します。
var client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_3)
.build();
個々のリクエスト単位で指定することもできます。
var request = HttpRequest.newBuilder(URI.create("https://openjdk.org/")) .version(HttpClient.Version.HTTP_3) .GET().build();
ターゲットサーバーがHTTP/3をサポートしていない場合、リクエストはデフォルトで透過的にHTTP/2、あるいは必要に応じてHTTP/1.1にダウングレードされます。