我有一些相当简单的代码可以调用 URL,获取响应,如果有实体,则将实体向下传输。
当我添加对实体内容长度的测试时,问题就来了。我可以通过代理运行调用,并看到 Content-Length 标头设置正确:
Content-Disposition: attachment; filename="something.zip";
Content-Length: 12390600
Content-Type: application/zip
所以在我的代码中我检查:
HttpResponse response = _client.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null && entity.getContentLength() > 0) {
handleEntity(entity);
}
如果我查看响应,除了内容长度之外,所有预期的标头都在那里。当我检查实体对象时,它为getContentLength()调用返回 -1。在文档中,如果您的内容长度超过 Long.MAX_VALUE 它将返回一个负数,但这里不是这种情况。
所以我现在刚刚删除了这个检查,但我真的很想了解这在这种情况下意味着什么。文档添加了一个警告,即“如果已知”它将返回内容长度,但在这种情况下,它似乎应该是已知的。
感谢您对这里发生的事情的任何见解......