ГОЛОВУ с WebClient? - PullRequest
       17

ГОЛОВУ с WebClient?

25 голосов
/ 17 июля 2010

Я собираюсь предположить, что ответ отрицательный, но .... Есть ли способ использовать WebClient для отправки метода HEAD и возврата заголовков в виде строки или чего-то подобного?

Ответы [ 3 ]

21 голосов
/ 17 июля 2010

Вы правы. WebClient не поддерживает это. Вы можете использовать HttpWebRequest и установить метод HEAD, если вы хотите эту функциональность:

System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
request.Method = "HEAD";
request.GetResponse();
15 голосов
/ 12 октября 2012

Другим способом является наследование от WebClient и переопределение GetWebRequest (адрес Uri) .

    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;
        }
    }
4 голосов
/ 19 сентября 2012

Большинство веб-серверов, с которых я запрашиваю, принимают этот метод.Не каждый веб-сервер, хотя.Например, IIS6 будет обрабатывать метод запроса SOMETIMES.

Это код состояния, который возвращается, когда метод не разрешен ...

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

Спасибо, Майк

...