1

我真的对在我的 android 应用程序中使用 http-post 计算上传(二进制/jpg)的移动平均值感到绝望。

我使用 DataOutputStream 作为 ouputStream:

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 毫秒(文件为 1MB)。真正的上传似乎在以下行中执行(大约需要 11000 毫秒):

int responseCode = connection.getResponseCode();

看来,我无法用上面的代码解决我的问题。有什么方法可以做我想做的吗?我听说 Apaches HttpCore 有能力做这样的事情,但我找不到任何似乎有帮助的方法或文档。

有谁知道如何做到这一点?

4

1 回答 1

1

请确保您使用setChunkedStreamingMode(int),否则响应正文将被缓冲在内存中,直到您尝试关闭连接并获取响应代码,这看起来就像您正在经历的那样。

关于 setChunkedStreamingMode 的 Android 文档

于 2012-12-04T18:54:26.343 回答