ために順番にそれは、setBody
にInputStreamを使用しないようにするために、ドキュメントで提案されましたコンテンツの長さを取得すると、ライブラリはすべてをメモリにロードする必要があります。
ByteArrayBodyGeneratorにも同じ問題があるようです。コンテンツの長さを取得するには、bytes.length()
とbytes
の呼び出しを使用するバイト配列(private final byte [] bytes;)を使用します。したがって、バイト配列の長さを取得するには、配列をメモリにロードする必要があります。ここで
はgithubのからのソースです: https://github.com/sonatype/async-http-client/blob/master/src/main/java/com/ning/http/client/generators/ByteArrayBodyGenerator.java
あなたが問題を回避するために、独自のBodyGenerator実装を書き込むことができます。
final SimpleAsyncHttpClient client = new SimpleAsyncHttpClient.Builder()
.setRequestTimeoutInMs(Integer.MAX_VALUE)
.setUrl(url)
.build();
client.post(new ByteArrayBodyGenerator(YOUR_BYTE_ARRAY)).get();
をそして、あなたは、従来のAPIを使用する場合:
はまた、あなたはBodyGeneratorの使用例を求め
final AsyncHttpClientConfig config
= new AsyncHttpClientConfig.Builder().setRequestTimeoutInMs(Integer.MAX_VALUE).build();
final AsyncHttpClient client = new AsyncHttpClient(config);
client.preparePost(url)
.setBody(new ByteArrayBodyGenerator(YOUR_BYTE_ARRAY))
.execute()
.get();