0

我有一些相当简单的代码可以调用 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 它将返回一个负数,但这里不是这种情况。

所以我现在刚刚删除了这个检查,但我真的很想了解这在这种情况下意味着什么。文档添加了一个警告,即“如果已知”它将返回内容长度,但在这种情况下,它似乎应该是已知的。

感谢您对这里发生的事情的任何见解......

4

1 回答 1

1

我怀疑您正在混淆 HTTP 消息内容长度和多部分内容正文中各个 MIME 正文部分的长度

于 2013-07-23T12:13:34.697 回答