Penjelasan
1. Permintaan tak segerak HttpClient mengembalikan CompletableFuture, dan kaedahnya yang luar biasa boleh digunakan untuk pemprosesan sandaran.
2. Tidak seperti WebClient, HttpClient tidak akan mempunyai pengecualian kod status 4xx atau 5xx Anda perlu mengendalikannya mengikut situasi anda sendiri, mengesan pengecualian kod status secara manual atau mengembalikan kandungan lain.
Instance
@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()); }
Atas ialah kandungan terperinci Analisis contoh pengendalian ralat HttpClient di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!