当资源很大时,有没有办法在Java HttpClient调用期间不下载body?

时间:2010-12-01 14:56:30

标签: java apache httpclient apache-commons

我试图阻止org.apache.http.client.HttpClient(link text)在资源超过10 MB时下载正文。

我在这里搜索后做了什么,其他人做了一个HEAD调用,然后检查Content-Length标题,如果它是< 10MB,做一个GET电话,最后对响应机构做点什么。

这会有更好的解决方案吗?我想避免额外的电话。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以随时拨打常规电话并检查长度,如果长度为> 10MB然后就打破并取消下载。但问题是在取消之前套接字仍会尽可能多地下载。我认为做一个HEAD调用是最好的方法。

答案 1 :(得分:2)

最好的方法是使用HTTP HEAD,因为HEAD请求文件或资源上的标头信息(在RFC1945,第8.2节中规定)。

根据HEAD调用的响应,检索Content-Length邮件标头,查看大小是否小于或大于10MB。

执行GET将导致返回完整的实体主体。

Apache HttpClient(版本3)支持HTTP HEAD。