Java:有没有办法在上传带有帖子的文件时计算下载吞吐量(在特定时间间隔内)?

时间:2012-12-04 18:03:58

标签: java android http upload

我真的绝望在我的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有能力做这样的事情,但我找不到任何看似有帮助的方法或文档。

有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

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

Android doc on setChunkedStreamingMode