我正在使用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的压缩数据。服务器正在响应其他设备的请求,没有问题。
如果我不压缩数据并使用StringEntity
和TextHttpResponseHandler
发送数据,一切都会很好。