HttpURLConnection显示进度

时间:2014-11-13 01:43:22

标签: java android http

我使用HttpURLConnection连接我的服务器。我想显示更新进度。

URL url = new URL(RequestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.set...// many params.
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
dos.write("http String"); // eg Content-Disposition: form-data......
InputStream is = new FileInputStream(file); // Take file to Stream.
while(){
   dos.write(fileString);// Take file Strean to memory.This place can take prograss,but just in momory,not post to server proress.
}
dos.flush();
InputStream input = conn.getInputStream(); // This place will post data to server,but i donot how to get progress.

请帮帮我,谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用AsyncTask

答案 1 :(得分:0)

AsyncTask 已弃用,因为 API 30。

我设法使用 getContentLength() 从 HttpURLConnection 获取进度并从流中读取固定块。如果服务器不包含 Content-Length 标头,则您必须找到另一种方法来获取要下载的总数据大小。

以下代码段显示了报告下载进度的示例:

python3 test.py

您可以将 ByteArrayOutputStream 替换为 OutputStreamWriter,因为数据不是二进制的。