HEAD with WebClient?

不羁岁月 提交于 2019-12-17 16:43:17

问题


I am going to assume the answer is no but.... Is there a way to use WebClient to send the HEAD method and return the headers as a string or something similar?


回答1:


You are right WebClient does not support this. You can use HttpWebRequest and set the method to HEAD if you want this functionality:

System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
request.Method = "HEAD";
request.GetResponse();



回答2:


Another way is to inherit from WebClient and override 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;
        }
    }



回答3:


Most web servers that I request from will accept this method. Not every web server does though. IIS6, for example, will honor the request method SOMETIMES.

This is the status code that is returned when a method isn't allowed...

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

Thanks, Mike



来源:https://stackoverflow.com/questions/3268926/head-with-webclient

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!