首頁  >  文章  >  Java  >  使用Java 11中的新的HttpClient發送非同步HTTP請求並處理回應

使用Java 11中的新的HttpClient發送非同步HTTP請求並處理回應

WBOY
WBOY原創
2023-07-31 14:24:311932瀏覽

使用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。我們可以使用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的header方法指定了請求頭的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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn