Android HttpURLConnection.setChunkedStreamingMode()的默认块长度是多少?

4
HttpURLConnection.setChunkedStreamingMode()的文档中,如果我在参数中指定0,则会使用默认分块长度。
conn.setChunkedStreamingMode(0);

默认块长度的精确值是多少?参数的单位是什么?以字节为单位。

1个回答

11
你的问题让我很好奇,所以我测试了一些东西。 默认块长度的确切值是多少? 我在这里发现chunkLength是HttpURLConnection类的一个受保护变量,这意味着它只能在类本身或子类中访问。因此,我创建了HttpURLConnection的一个子类,并尝试打印出chunkLength。
class HttpTest extends HttpURLConnection {

    protected HttpTest(URL url) {
        super(url);
        Log.d("CHUNKLENGTH", String.format("%d", this.chunkLength));
        this.setChunkedStreamingMode(0);
        Log.d("CHUNKLENGTH", String.format("%d", this.chunkLength));
    }

    @Override
    public void disconnect() {
        // TODO Auto-generated method stub
    }

    @Override
    public boolean usingProxy() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void connect() throws IOException {
        // TODO Auto-generated method stub

    }
}

像这样调用

try {
    HttpTest test = new HttpTest(new URL("http://www.google.com/"));
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

这些是结果

enter image description here

从中我们可以得出结论,它使用的默认值为1024。
“参数的单位是什么?”
“在你发布的链接中提到,小块长度会增加每个块的标头,导致必须传输的字节数增加。我认为可以默认输入字节数。默认值1024也符合该条件。”

1
@Raptor 谢谢,我很高兴它有帮助。 - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接