我在哪里查找我的HttpClient响应'内容长度?

时间:2013-12-02 00:51:08

标签: android apache-commons apache-commons-httpclient content-length

我使用Apache-Commons并下载文件内容。一切都很完美,但我想添加一个进度指示器,我需要传入文件的内容长度。

在我的调试器中,我可以看到我的InputStream标记了一个对象'类型ContentLengthInputStream的类型,其中一个对象的属性实际上是文件的长度!但是,我没有看到在我的代码中获取该对象的方法。 InputStream没有那么多的方法,也没有任何方法得到这个内部对象或从中提取任何值。

是否有其他方法可以获得此标头?我可以看到数据存在,但我很难知道如何访问它。

如果它有用,这里是一个电话的片段...

 HttpClient client = new HttpClient();
 filePost = new PostMethod(URL_PATH);


 InputStream ret ;
 responseCode = client.executeMethod(filePost);             
 ret = filePost.getResponseBodyAsStream(); 

2 个答案:

答案 0 :(得分:0)

从标题中获取内容长度。

Header[] headers = response.getAllHeaders();
for(Header h:headers){
    if(h.getName().equals("Content-Length")){
        length = h.getValue();
        break;
    }
}

What's the “Content-Length” field in HTTP header?

答案 1 :(得分:0)

啊!发现它......

使用我上面的代码......

 HttpClient client = new HttpClient();
 filePost = new PostMethod(URL_PATH);


 InputStream ret ;
 responseCode = client.executeMethod(filePost);             
 ret = filePost.getResponseBodyAsStream(); 

 //adding this here gets you the size of the incoming file
 long fileSize = filePost.getResponseContentLength();