Метод HttpWebRequest HEAD возвращает тело - PullRequest
2 голосов
/ 24 января 2012

Мой веб-запрос с методом «Head» постоянно возвращает тело моей веб-страницы (на локальном хосте).Вот как это в основном создается:

HttpWebRequest webrequest = WebRequest.Create(url.ToString()) as HttpWebRequest;
webrequest.Method = "HEAD";
WebResponse response = webrequest.GetResponse();

Когда я ставлю точку останова на своей странице aspx.cs, я перехожу к методу OnInit (), а также к методу Page_Load (), где я считаю, что яне должен вмешиваться в запрос метода Head (я не прав?).

В моем Page_Load () я выполняю некоторый код, который не хочу выполнять при вызове с помощью метода Head, но позжекогда я вызываю с помощью метода Get (как только я получаю заголовки).

Я что-то упустил?(пока не слишком знаком с запросами и ответами Http ...: /) Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 24 января 2012

Попробуйте этот пример кода ....

for (int i = 0; i < ParsedLinks.Count; i++)
{
        Thread.Sleep(500);
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(ParsedLinks[i]);
        req.Method = "HEAD";
        req.Credentials = CredentialCache.DefaultCredentials;
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        bool b_Result = int.TryParse(resp.Headers.Get("Content-Length"), out i_ContentLength);
        int i_Size = (int)(i_ContentLength / 1024);
        req.Abort();
        resp.Close();

}

надеюсь, это поможет http://forums.asp.net/t/1412824.aspx/1

0 голосов
/ 24 января 2012

Разница в том, что если вы попытаетесь прочитать ответ, вы ничего не получите в случае HEAD. Где, как вы можете видеть содержание ответа в случае GET

            var response = webrequest.GetResponse().GetResponseStream();
            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
            StreamReader readStream = new StreamReader(response, encode);
            Console.WriteLine(readStream.ReadToEnd().Length) // you should see 0
            readStream.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...