HttpWebRequest не работает на веб-странице - PullRequest
1 голос
/ 29 августа 2009

Я всегда использовал этот код для загрузки HTML-кода с веб-страницы:

private string GetHtml(string url)
{
  HttpWebRequest web = (HttpWebRequest)WebRequest.Create(url);
  web.Method = "GET";
  WebResponse resp = web.GetResponse();
  Stream istrm = resp.GetResponseStream();
  StreamReader sr = new StreamReader(istrm);
  string html = sr.ReadToEnd();
  sr.Close();
  resp.Close();
  return html;
}

Но он возвращает пустую строку, когда url имеет это значение:

http://actas.rfef.es/actas/RFEF_CmpJornada?cod_primaria=1000144&CodCategoria=100

1 Ответ

3 голосов
/ 29 августа 2009

Используйте cookiejar (и для очистки используйте несколько использования)

private string GetHtml(string url)
{
    HttpWebRequest web = (HttpWebRequest)WebRequest.Create(url);
    web.Method = "GET";
    CookieContainer cookieJar = new CookieContainer();
    web.CookieContainer = cookieJar;
    using (WebResponse resp = web.GetResponse())
    {
        using (Stream istrm = resp.GetResponseStream())
        {
            using (StreamReader sr = new StreamReader(istrm))
            {
                string html = sr.ReadToEnd();
                sr.Close();
                resp.Close();
                return html;
            }
        }
    }
}

Кроме того, что также можно использовать, если дела снова начинают ухудшаться:

    web.Accept = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
    web.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)";
    web.Referer = url;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...