在HttpURLConnection.setChunkedStreamingMode()的文档中,它说如果我在参数中指定0,它将使用默认的块长度,例如:
conn.setChunkedStreamingMode(0);
默认块长度的确切值是多少?什么是参数的单位?以字节为单位?
答案 0 :(得分:11)
你的问题让我很好奇所以我测试了一些东西。
默认块长度的确切值是什么?
我发现here chunkLength是HttpURLConnection类的protected variable,这意味着它只能在类本身或子类中访问。所以我创建了一个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();
}
这些是结果
由此可以得出结论,它使用的默认值是1024
参数的单位是什么?
在您发布的链接中,提到了
由于每个块上的标头,一小块长度会增加必须传输的字节数。
我认为你必须给出字节数是安全的。默认1024也符合该标准