Explanation
1. La requête asynchrone HttpClient renvoie CompletableFuture, et sa propre méthode exceptionnelle peut être utilisée pour le traitement de secours.
2. Contrairement à WebClient, HttpClient n'a pas d'exceptions de code d'état 4xx ou 5xx. Vous devez le gérer en fonction de votre propre situation, détecter manuellement les exceptions de code d'état ou renvoyer d'autres contenus.
Exemple
@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()); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!