0

如何在 AsyncHttpClient 中增加默认缓冲区大小。我正在使用以下代码从流服务器(Http 长池)读取消息。

当服务器发送超过 8KB 的消息时,我的消息被分成块。

前任:-

原始消息:-

这是我的测试信息

收到消息:-

这是我的

测试

信息

有没有办法增加缓冲区大小?这样我就可以在一个部分中收到整个消息?

我的代码

AsyncHttpClientConfig.Builder config = new AsyncHttpClientConfig.Builder()
    .setConnectionTimeoutInMs(120000)
    .setRequestTimeoutInMs(-1)
    .setIdleConnectionTimeoutInMs(120000)
    .setMaxConnectionLifeTimeInMs(-1);          
    AsyncHttpClient client = new AsyncHttpClient(config.build());   
    Future<String> f = client.prepareGet("http://IP:PORT/context/test").execute(
            new AsyncHandler<String>() {
                private ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                @Override
                public STATE onBodyPartReceived(
                        HttpResponseBodyPart bodyPart) throws Exception {
                     String data = new String(bodyPart.getBodyPartBytes());
                     System.out.println("My Message : ---------------------------- >" + data);                  
                    return STATE.CONTINUE;
                }

            });
    f.get();
}

我试图积累消息正文部分,但这需要服务器大小的单独逻辑才能知道消息的结尾。

谢谢,

拉维

4

1 回答 1

0

这与 AsyncHttpClient 中的缓冲区大小无关,这就是您的响应如何通过网络分成 TCP 帧的方式。如果您不想控制每个块但准备将它们缓冲在内存中并且只处理整个主体,请使用 aAsyncCompletionHandler而不是 low level AsyncHandler

于 2016-01-08T12:40:47.023 回答