我有一些相当简单的代码,它会调用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,则会返回一个负数,但that's not the case here.
所以我现在刚刚删除了这个检查,但我真的很想知道在这种情况下意味着什么。文档添加了一个警告,它将返回“如果已知”的内容长度,但在这种情况下,它似乎应该是已知的。
感谢您对此处发生的事情有所了解......
答案 0 :(得分:1)
我怀疑你是在混合HTTP消息内容长度和多部分内容体中各个MIME正文部分的内容