Tom*_*Tom 5 java apache-httpclient-4.x
我对此没有很好的了解HttpUrlConnection.setChunkedStreamingMode,此模式的作用是什么?
我有以下示例代码:
HttpURLConnection conn = getHttpURLConnection(_url);
conn.setChunkedStreamingMode(4096); //4k
conn.setConnectTimeout(3000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
byte[] buffer = new byte[1024 * 10];//10k
FileInputStream in= new FileInputStream(file); //Write the content of the file to the server
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.flush();
in.close();
Run Code Online (Sandbox Code Playgroud)
说,文件大小为101k,我将块大小设置为4096。
每次写入时,HttpUrlConnection会向服务器发送4096字节吗?最后一次是1k?
请注意,我已经使用了10k缓冲区写入输出流,块大小和缓冲区大小不同是否重要?
如果我在代码中禁用ChunkedStreamMode,与设置4096的代码相比有什么效果?
- HttpUrlConnection 每次写入都会向服务器发送 4096 个字节?最后一次1k?
是的。
- 请注意,我使用了 10k 缓冲区写入输出流,块大小和缓冲区大小不同是否重要?
不。
- 如果我在我的代码中禁用了 ChunkedStreamMode,与我设置 4096 的代码相比,效果如何?
效果是整个输出都被缓冲直到你关闭,这样就可以先设置和发送 Content-length 头,这会增加很多延迟和内存。不推荐在大文件的情况下。