メソッド newBuilder()、build()
HttpRequestクラスは、名前から容易に理解できる http リクエストを記述するために使用されます。このオブジェクトはそれ自体では何も行いません。http リクエストに関するさまざまな情報が含まれているだけです。したがって、おそらくすでに推測されているように、Builder テンプレートも作成に使用されます。
HttpRequest request = HttpRequest.newBuilder()
.method1()
.method2()
.methodN()
.build();
newBuilder()メソッドとbuild()メソッドの呼び出しの間では、オブジェクトを構築するためにすべてのメソッドを呼び出す必要があります。HTTPリクエスト。
単純なリクエストの例は次のようになります。
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(“http://codegym.cc”))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
HttpRequestクラスのすべてのメソッドは、公式ドキュメントのリンクにあります。
そして、それらの中で最も人気のあるものを分析します。
uri() メソッド
uri()メソッドを使用すると、http リクエストの送信先となる URI (または URL) を設定できます。例:
HttpRequest request = HttpRequest.newBuilder()
.uri( URI.create(“http://codegym.cc”) )
.build();
ちなみに、URI をnewBuilder()メソッドに直接渡すことで、このコードを少し短くすることができます。
HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();
重要!URI は次の 2 つの方法で作成できます。
- newURI(文字列)
- URI.create(文字列)
2 番目の方法が望ましいです。残念ながら、最初の方法はあまり良い方法ではありません。URI コンストラクターがpublic URI(String str) throws URISyntaxExceptionとして宣言されており、URISyntaxExceptionはチェック例外であるためです。
メソッド GET()、POST()、PUT()、DELETE()
次のメソッドを使用して http リクエスト メソッドを設定できます。
- 得る()
- 役職()
- 置く()
- 消去()
単純な GET リクエストは次のようになります。
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.GET()
.build();
version() メソッド
HTTP プロトコルのバージョンを設定することもできます。選択肢は 2 つだけです。
- HttpClient.Version.HTTP_1_1
- HttpClient.Version.HTTP_2
HTTP/2 プロトコルを使用してリクエストを作成したい場合は、次のように記述する必要があります。
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.version( HttpClient.Version.HTTP_2 )
.GET()
.build();
とてもシンプルですね。:)
timeout() メソッド
クエリの実行時間を設定することもできます。合格してもリクエストが完了しない場合は、HttpTimeoutExceptionがスローされます。
時間自体はオブジェクトを使用して設定されます間隔Java DateTime API から。例:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.timeout( Duration.of(5, SECONDS) )
.GET()
.build();
このメソッドの存在は、HttpClientクラスとHttpRequestクラスがさまざまなタスクを実行できることを示しています。リクエストを実行しているときに、ネットワークで何かが発生し、それが 30 秒続いたと想像してください。例外を即座に受け取り、それに正しく反応する方がはるかに便利です。
header() メソッド
任意のリクエストに任意の数のヘッダーを追加することもできます。そしてそれは他のことと同じくらい簡単です。これには特別なメソッドheader()があります。例:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.header("name1", "value1")
.header("name2", "value2")
.GET()
.build();
多くのヘッダーを一度に設定する別の方法もあります。たとえば、ヘッダーのリストを配列に変換する場合に便利です。
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("name1", "value1", "name2", "value2")
.GET()
.build();
基本的なものはすべてシンプルです。
GO TO FULL VERSION