2017-12-26 51 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メソッドで処理できます。

関連する問題