我真的很失望在我的android应用程序中用http post计算上传(二进制/jpg)的移动平均值。
我使用dataoutputstream作为outputstream:

while (true) {
    while(bufferSize > 0) {
        int transferedBytes = Math.min(bufferSize, packetSize);
        outputStream.write(buffer, offset, transferedBytes);
        outputStream.flush();
        // save transferedBytes as throughput
        offset += transferedBytes;
        bufferSize -= transferedBytes;
    }

    if ((available = inputStream.available()) <= 0) {
        break;
    }
    int nBytes = Math.min(avail, bufferSize);
    bufferSize = inputStream.read(buffer, 0, nBytes);
    offset = 0;
}

使用此实现,上载工作正常,但上述行在500毫秒内执行(文件大小为1 MB)。真正的上传似乎是在以下几行中执行的(大约需要11000ms):
int responseCode = connection.getResponseCode();

似乎,我无法用上面的代码解决我的问题。有什么方法可以做到我想要的吗?我听说ApacheHttpCore有这样的能力,但我找不到任何有帮助的方法或文档。
有人知道怎么做吗?

最佳答案

请确保您使用setChunkedStreamingMode(int)否则响应体将缓冲在内存中,直到您尝试关闭连接并取回响应代码,这似乎是您正在经历的。
Android doc on setChunkedStreamingMode

07-28 07:02