如何只获取带有HTTP GET请求的标头而无需获取正文

时间:2017-05-31 14:14:56

标签: c# http

是否有机会进行http获取请求,读取标头而不是获取正文以减少流量并提高速度? 我使用这段代码:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(u1);
        request.AllowAutoRedirect = true;
        request.Timeout = 30000;
        request.Method = "GET";
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36";
        request.KeepAlive = true;
        HttpWebResponse response;

        using (response = (HttpWebResponse)request.GetResponse())
        {
            var res = response.ResponseUri.ToString();
        }

所以我只需要结果网址。如果有重定向(Location头) - 我将得到结果url。但我不需要身体。使用GET方法(而不是HEAD方法)获得响应以获得没有响应体的结果是真的吗?

2 个答案:

答案 0 :(得分:2)

在返回正文的资源上使用GET意味着您想要获取正文。假设服务器资源支持,HEAD的设计完全符合您的要求。

如果服务器不支持HEAD,您可能会使用Range header来请求几个字节,但这也取决于支持它的资源,并且是一种黑客攻击。

答案 1 :(得分:2)

您可以使用HttpRequest的Headers属性

response.Headers

获取响应的标题。