説明
1. HttpClient 非同期リクエストは CompletableFuture を返し、例外的に独自のメソッドをフォールバック処理に使用できます。
2. WebClient とは異なり、HttpClient には 4xx または 5xx ステータス コードの例外がないため、ステータス コードの例外を手動で検出するか、他のコンテンツを返すか、独自の状況に応じて処理する必要があります。
例
@Test public void testHandleException() throws ExecutionException, InterruptedException { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofMillis(5000)) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://twitter.com")) .build(); CompletableFuture<String> result = client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) // .whenComplete((resp,err) -> { // if(err != null){ // err.printStackTrace(); // }else{ // System.out.println(resp.body()); // System.out.println(resp.statusCode()); // } // }) .thenApply(HttpResponse::body) .exceptionally(err -> { err.printStackTrace(); return "fallback"; }); System.out.println(result.get()); }
以上がJava における HttpClient のエラー処理例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。