I/O 初級

組み込みのHttpClientでクリーンなモダンHTTPリクエストを実行する。

✕ Java 8
URL url = new URL("https://api.com/data");
HttpURLConnection con =
    (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
// read lines, close streams...
✓ Java 11+
var client = HttpClient.newHttpClient();
var request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.com/data"))
    .build();
var response = client.send(
    request, BodyHandlers.ofString());
String body = response.body();
このコードに問題がありますか? お知らせください。
📐

ビルダーAPI

リクエスト、ヘッダー、タイムアウトをフルエントビルダーで設定できます。

🔄

HTTP/2サポート

多重化とサーバープッシュを備えたHTTP/2を内蔵しています。

非同期対応

sendAsync()はCompletableFutureを返します。

旧来のアプローチ
HttpURLConnection
モダンなアプローチ
HttpClient
JDKバージョン
11
難易度
初級
モダンHTTPクライアント
利用可能

JDK 11(2018年9月)以降、広く利用可能

HttpClientはHTTP/1.1とHTTP/2、非同期リクエスト、WebSocket、カスタムエグゼキュータ、コネクションプーリングをサポートします。URLConnectionのキャストや手動でのInputStream読み取りは不要になりました。

共有 𝕏 🦋 in