CodeGym/Java Course/Module 3 a ɛto so abien/使用 HttpRequest 發出請求

使用 HttpRequest 發出請求

開放

方法 newBuilder(), build()

HttpRequest類用來描述一個http-request,從名字就很容易理解。這個對象本身什麼都不做,它只是包含有關 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:

  • newURI(字符串)
  • URI.create(字符串)

第二種方式更可取。不幸的是,第一種方法不是很好,因為 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();

版本() 方法

您還可以設置 HTTP 協議版本。只有2個選項:

  • HttpClient.版本.HTTP_1_1
  • HttpClient.版本.HTTP_2

假設您想使用 HTTP/2 協議創建請求,那麼您需要編寫:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .version( HttpClient.Version.HTTP_2 )
   .GET()
   .build();

很簡單,不是嗎?:)

超時() 方法

您還可以設置查詢執行時間。如果它通過並且請求從未完成,將拋出HttpTimeoutException

時間本身是使用對象設置的期間來自 Java 日期時間 API。例子:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .timeout( Duration.of(5, SECONDS) )
   .GET()
   .build();

此方法的存在表明HttpClientHttpRequest類可以執行各種任務。想像一下,您正在執行一個請求,網絡發生了一些事情並且持續了 30 秒。立即接收到異常並正確地做出反應要有用得多。

標頭() 方法

您還可以向任何請求添加任意數量的標頭。而且它和其他任何事情一樣容易做。為此有一個特殊的方法 - 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();

基本的一切都很簡單。

留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言