1

我正在使用 HttpWebRequest 并希望在下载整个响应之前检查响应的 ContentLength。但是打电话的时候:

var res = request.GetResponse(); // entire response is being downloaded
var len = res.ContentLegth; // need only this value 

如何在 C# 中实现这一点?

4

2 回答 2

2

您需要发出 HEAD 请求,而不是 GET。这将只返回响应中的 HTTP 标头。

此处记录了所有标准化的 HTTP 请求类型。

于 2013-05-09T08:20:46.087 回答
1

好的,所以问题中的原始代码确实有效,它只在调用“GetResponse”时下载“HEAD”,并且 ContentLength 可用。它对我不起作用,因为我得到了一个具有“分块”传输编码的资源。如果我没有在 fiddler 打开的情况下对其进行测试,这仍然应该有效,在 ContentLength 中返回 -1。显然,当提琴手遇到“分块”响应时,它会尝试将其全部下载,即使只是调用“req.GetResponse()”也是如此。

于 2013-05-09T09:16:59.053 回答