Как сохранить веб-страницу в строку с поддержкой куки (httpWebRequest) - PullRequest
1 голос
/ 06 апреля 2010

Мне нужно прочитать веб-страницу и сохранить ее содержимое в строке для дальнейшей обработки.
Звучит просто, но у меня проблема с поддержкой куки.

Открытая страница сообщает Мне нужен браузер, поддерживающий куки (или включен).
Я сделал метод, пытаясь сделать это через httpWebRequest - который обычно работает для меня, но я зашел в тупик с этими печальными куки ...

Есть идеи, как заставить это работать?

Вот мой метод:

string ReadHtml (string address, string encoding) {
   Uri url = new Uri(address);

   CookieContainer cookieContainer  = new CookieContainer();
            HttpWebRequest httpWebRequest  =     (HttpWebRequest)HttpWebRequest.Create(url);
   httpWebRequest.AllowAutoRedirect = true;
            httpWebRequest.KeepAlive   = true;
            httpWebRequest.CookieContainer  = cookieContainer;
            httpWebRequest.UserAgent   = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
            httpWebRequest.Method    = "GET";
            HttpWebResponse webResponse = (HttpWebResponse)httpWebRequest.GetResponse();

   // Code Page
   Encoding enc = Encoding.GetEncoding(encoding);  

   // Read content
   StreamReader loResponseStream = new     StreamReader(webResponse.GetResponseStream(),enc);
   string   lcHtml    = loResponseStream.ReadToEnd();

   webResponse.Close();
   loResponseStream.Close();

   return lcHtml;

  }

Ответы [ 2 ]

1 голос
/ 06 апреля 2010

Страница (до тех пор, пока вы не сделаете запрос) отправляет вам файл cookie, и по другому запросу эта страница пытается прочитать это печенье.Когда вы не предоставляете cookie, то страница думает, что ваш браузер не поддерживает этот механизм.

Я рекомендую вам:

  1. Открыть приложение Fiddler
  2. Проверьте, какие файлы cookie сохраняются (пытаясь сохранить)

Решение состоит в том, чтобы вернуть на страницу именно этот файл cookie, который отправляет вам эта страница.

0 голосов
/ 06 апреля 2010

Я не уверен, что полностью понимаю вопрос ... Вы говорите о том, чтобы взять содержимое веб-страницы и сохранить его в файле cookie?Хотя я бы точно не рекомендовал это, если вам нужно, используйте:

HttpCookie cookie = new HttpCookie("cookieName");
cookie.Value = ReadHtml("http://www.google.com/", "utf-8");
cookie.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(cookie);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...