29

我将假设答案是否定的,但是......有没有办法使用 WebClient 发送 HEAD 方法并将标题作为字符串或类似的东西返回?

4

3 回答 3

27

你是对的 WebClient 不支持这个。如果需要此功能,可以使用 HttpWebRequest 并将方法设置为 HEAD:

System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
request.Method = "HEAD";
request.GetResponse();
于 2010-07-16T21:50:06.660 回答
18

另一种方法是从 WebClient 继承并覆盖GetWebRequest(Uri address)

    public class ExWebClient : WebClient
    {
        public string Method
        {
            get;
            set;
        }

        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest webRequest = base.GetWebRequest(address);

            if (!string.IsNullOrEmpty(Method))
                webRequest.Method = Method;

            return webRequest;
        }
    }
于 2012-10-12T15:41:03.337 回答
4

我请求的大多数 Web 服务器都会接受这种方法。但是,并非每个 Web 服务器都这样做。例如,IIS6 有时会接受请求方法。

这是在不允许方法时返回的状态码...

catch (WebException webException)
            {
                    if (webException.Response != null)
                    {
                        //some webservers don't allow the HEAD method...
                        if (((HttpWebResponse) webException.Response).StatusCode == HttpStatusCode.MethodNotAllowed)

谢谢,迈克

于 2012-09-19T15:55:21.697 回答