2016-06-24 5 views
1

私はJava NIOを初めて使用しています。私はそれを使用してHTTP Getリクエストを作成しています。リクエストは適切に実行されますが、レスポンスの内容を取得する方法がわかりません。例えばhttpの応答コンテンツをApacheのHTTP非同期クライアントと非同期で消費するにはどうすればよいですか?

CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault(); 
httpClient.start(); 
url = buildUrl(); //builds the url for the GET request 
BasicAsyncResponseConsumer consumer = new BasicAsyncResponseConsumer(); 
Future<HttpResponse> future = httpClient.execute(HttpAsyncMethods.createGet(url), consumer, null) 

は今どのように私は、応答の内容を入手できますか?将来の印刷では、次のようになります。

HTTP/1.1 200 OK [Content-Type: application/json, Date: Fri, 24 Jun 2016 20:21:47 GMT, Content-Length: 903, Connection: keep-alive] [Content-Length: 903,Chunked: false] 

私の応答(ブラウザ上)は903文字ですので、要求が正しく行われています。しかし、結果のjsonコンテンツをどのように出力するのですか?

+0

あなたはどちらのライブラリを使用していますか?あなたはNIOを使用しているようには見えません。 –

+0

私はNIOを使用していますか? –

+0

NIOを使ったことがあるかもしれませんが、ここで言及しているコードでは使用していません。ヒント: 'java.nio'パッケージ内のクラスを使用していますか? –

答えて

1

これにアプローチするには、いくつかの方法があります。

Futureget()を呼び出し、executeを返し、結果が準備完了になるまでブロックします。結果が準備完了すると、get()getEntityでコンテンツを取得するために使用できるHttpResponseオブジェクトを返します。 HttpEntityInputStreamです。それはあなたが適切だと思うが、それを読んでください。

つ、読み出し(および閉鎖する)BasicAsyncResponseConsumerより賢くHttpAsyncResponseConsumer実装を提供HttpResponseHttpEntityHttpAsyncClient#executeに3番目の引数として期待されているFutureCallback値によって消費することができる値を生成します。このソリューションはあなたの現在のスレッドをブロックしません。

+0

、ありがとう! –

関連する問題