2010-04-06 1 views
1

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

Открытая страница говорит Мне нужен браузер, поддерживающий файлы cookie (или включен).
Я сделал метод, пытающийся сделать это через 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; 

    } 

ответ

1

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

Я рекомендую вам: приложения

  1. Открыть Скрипач
  2. Проверьте, что куки сохраняются (пытаясь сохранить)

Решение предоставить обратно на страницу exacly, что печенье, что эта страница отправляет вас.

0

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

HttpCookie cookie = new HttpCookie("cookieName"); 
cookie.Value = ReadHtml("http://www.google.com/", "utf-8"); 
cookie.Expires = DateTime.Now.AddHours(1); 
Response.Cookies.Add(cookie); 
+0

Мне не нужно читать/управлять куки. Просто веб-страница, которую я хотел прочитать, требует от меня файлов cookie, которые могут отображаться. Пока отображается «Пожалуйста, включите файлы cookie в своем браузере» (вместо «нормального» контента). То, что я ищу, - это страница, на которой я счастлив «съесть» ее куки :) – Maciej

 Смежные вопросы

  • Нет связанных вопросов^_^