說明
1、HttpClient非同步請求傳回CompletableFuture,其自帶的exceptionally方法可用於fallback處理。
2、HttpClient不像WebClient那樣,它不會出現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中文網其他相關文章!