除了最大重定向,以及如何为Httpclient指定URL的最大下载大小?
答案 0 :(得分:2)
AFAIK没有HTTP标头告诉服务器最大响应大小。您可以查看响应的Content-Length
,如果响应太大,请立即返回。如果未指定(它甚至可以在服务器端未知),您唯一的选择是开始下载它。不用担心:当您致电HttpClient.execute().getEntity()
时,内容并未完全下载。 HttpEntity
可以进行流式传输和缓冲,这意味着只要您拨打execute()
答案 1 :(得分:1)
如果你没有得到Content-Length
,那么这是可选的;您必须将资源作为流下载并跟踪您自己手动下载的字节数。这就是HTTP的工作方式。
答案 2 :(得分:1)
根据Jarrod的回答,这就是我最终解决问题的方法:
HttpGet request = new HttpGet();
request.setURI(new URI(url));
response = client.execute(request);
BufferedReader in;
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
char buffer[] = new char[1024];
int totalReadSize = 0, currentRead=0;
while ((currentRead = in.read(buffer,0,buffer.length)) != -1)
{
totalReadSize += currentRead;
line = new String(buffer);
sb.append(line);
if (totalReadSize > MAX_DOWNLOAD_SIZE)
{
client.getConnectionManager().shutdown();
throw new Exception("File too large");
}
}