2017-12-26 12 views
2

요청을 비동기 적으로 보내고 응답을 받으면 비동기 적으로 다른 작업을 수행하려고합니다. 지금까지 내가 가지고있는 코드는 다음과 같습니다 그러나Java 9 HttpClient : 비동기 응답을 올바르게 처리합니다.

httpClient.sendAsync(request, HttpResponse.BodyHandler.asString()) 
      .thenRunAsync(() -> {}); 

, 내가 요청이 완료되면 Runnable가 실행되는 것을 완전히 확신 아니에요. 이 가정이 맞습니까? 그렇다면 응답을받은 후 적절히 처리하기 위해 무엇을 사용해야합니까?

+1

가정은 대부분 정확합니다. HTTP 요청이 성공적으로 완료되면 (응답 코드가 400 미만) Runnable이 실행됩니다. 그렇지 않으면 CompletableFuture가 예외적으로 완료되며 [예외적으로] 처리 할 수 ​​있습니다 (https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/CompletionStage.html#exceptionally-java.util). 기능 -) 방법. – VGR

+0

감사합니다. @VGR. 답을 쓰고 싶으면 받아 들일 것입니다! –

답변

2

가정은 대부분 정확합니다. HTTP 요청이 성공적으로 완료되면 (응답 코드가 400 미만) Runnable이 실행됩니다. 그렇지 않으면 CompletableFuture가 예외적으로 완료되며 해당 exceptionally 메서드로 처리 할 수 ​​있습니다.

관련 문제