ホームページ  >  記事  >  Java  >  Java 11 の新しい HttpClient を使用して非同期 HTTP リクエストを送信し、レスポンスを処理する

Java 11 の新しい HttpClient を使用して非同期 HTTP リクエストを送信し、レスポンスを処理する

WBOY
WBOYオリジナル
2023-07-31 14:24:311840ブラウズ

Java 11 で新しい HttpClient を使用して、非同期 HTTP リクエストを送信し、応答を処理する

Java 11 では、新しい HttpClient クラスが導入され、HTTP リクエストを送信し、応答を処理するための強力な機能が提供されました。以前の HttpURLConnection と比較して、新しい HttpClient は使いやすく、非同期操作をサポートしているため、同時リクエストの処理がより効率的になります。この記事では、Java 11 の新しい HttpClient を使用して非同期 HTTP リクエストを送信し、応答を処理する方法を紹介します。

まず、HttpClient オブジェクトを作成する必要があります。このオブジェクトは、HttpClient.newBuilder() メソッドを通じて作成できます。 HttpClient オブジェクトを作成するとき、タイムアウト、プロキシなどの特定のパラメーターを指定できます。以下は、HttpClient オブジェクトを作成するサンプル コードです。

import java.net.http.HttpClient;

HttpClient httpClient = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(10))
        .build();

次に、HttpClient オブジェクトを使用して HTTP リクエストを送信できます。 HttpClient には、GET、POST、PUT の 3 種類のリクエストがあります。 HttpRequest.newBuilder() メソッドを使用して HttpRequest オブジェクトを作成し、要求された URL、メソッド、要求ヘッダー、およびその他のパラメーターを指定できます。以下は、GET リクエストを送信するサンプル コードです。

import java.net.http.HttpRequest;
import java.net.URI;

// 发送GET请求
HttpRequest getRequest = HttpRequest.newBuilder()
        .uri(URI.create("http://example.com/api"))
        .GET()
        .build();

// 发送异步请求
httpClient.sendAsync(getRequest, HttpResponse.BodyHandlers.ofString())
        .thenApply(HttpResponse::body)
        .thenAccept(System.out::println);

上記のコードでは、HttpRequest.Builder の uri メソッドを通じてリクエストされた URL を指定し、GET メソッドを使用して HttpRequest オブジェクトを作成します。次に、HttpClient の sendAsync メソッドを使用してリクエストを送信し、HttpResponse.BodyHandlers.ofString() を使用して応答を処理する方法を指定しました。最後に、thenApply メソッドと thenAccept メソッドを使用して、応答コンテンツをそれぞれ処理しました。

GET リクエストに加えて、POST リクエストと PUT リクエストも送信できます。 POST リクエストを送信するサンプル コードは次のとおりです。

import java.net.http.HttpRequest;
import java.net.URI;
import java.net.http.HttpRequest.BodyPublishers;

// 发送POST请求
HttpRequest postRequest = HttpRequest.newBuilder()
        .uri(URI.create("http://example.com/api"))
        .header("Content-Type", "application/json")
        .POST(BodyPublishers.ofString("{"key": "value"}"))
        .build();

// 发送异步请求
httpClient.sendAsync(postRequest, HttpResponse.BodyHandlers.ofString())
        .thenApply(HttpResponse::body)
        .thenAccept(System.out::println);

上記のコードでは、HttpRequest.Builder のヘッダー メソッドでリクエスト ヘッダーの Content-Type を application/json として指定し、 POST メソッドを使用した HttpRequest オブジェクト。次に、HttpClient の sendAsync メソッドを使用してリクエストを送信し、HttpResponse.BodyHandlers.ofString() を使用して応答を処理する方法を指定しました。最後に、thenApply メソッドと thenAccept メソッドを使用して、応答コンテンツをそれぞれ処理しました。

HttpClient は、リクエストの送信とレスポンスの処理に加えて、プロキシの設定や HTTP 認証など、その他の便利なメソッドも提供します。詳細については、Java の公式ドキュメントを参照してください。

要約すると、Java 11 の新しい HttpClient クラスは、HTTP リクエストを送信し、応答を処理するためのより便利で効率的な方法を提供します。新しい HttpClient クラスを使用すると、非同期の GET、POST、および PUT リクエストを簡単に送信し、簡潔なコードを使用して応答を処理できます。これにより、開発者は同時リクエストをより効率的に処理し、アプリケーションのパフォーマンスを向上させることができます。

参考リンク:

  • [Java 11 公式ドキュメント](https://docs.oracle.com/en/java/javase/11/docs/api/java.net) .http/java/net/http/package-summary.html)

以上がJava 11 の新しい HttpClient を使用して非同期 HTTP リクエストを送信し、レスポンスを処理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。