AsyncHttpClient无法发送二进制数据

时间:2018-06-22 14:34:16

标签: android http client loopj

我正在使用loopj AsyncHttpClient反复将压缩的json发送到flask应用程序。这是我用来从Android应用发送数据的代码。我在UI线程中执行此操作。

deflater.reset();
deflater.setInput(data.getBytes());
deflater.finish();

ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[2048];
while (!deflater.finished()) {
    int byteCount = deflater.deflate(buf);
    baos.write(buf, 0, byteCount);
}

httpClient.post(ctx, serverUri, new ByteArrayEntity(baos.toByteArray()), "application/octet-stream", binaryResponseHandler);

这对于10个请求来说都可以正常工作。之后,我尝试了几次,但失败了,错误为cz.msebera.android.httpclient.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool。我通常会发送大约1KiB的压缩数据。服务器正在响应其他设备的请求,没有问题。

如果我不压缩数据并使用StringEntityTextHttpResponseHandler发送数据,一切都会很好。

0 个答案:

没有答案