2010-04-06 58 views
1

我需要读取网页并将其内容存储在字符串中以供进一步处理。
听起来很简单,但我有Cookie支持的问题。如何将网页保存为支持cookie的字符串(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

页(直到[R制作要求)向您发送Cookie,并在另一个请求该页面正在努力读书thatcookie。如果你不提供cookie,那么页面认为你的浏览器不支持这种机制。

我建议你:

  1. 打开Fiddler应用
  2. 检查保存什么饼干(试图保存)

的解决方案是提供返回页面exacly该cookie,该这个页面发送给你。

0

我不知道我很明白......你说的是采取了网页的内容,并将它们存储到一个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); 
+0

我不需要阅读/管理cookies。只是我想读的网页需要从我的cookies中启用显示。暂时显示“请在浏览器中启用Cookie”(而不是“正常”内容)。我在找的是告诉那个页面我很高兴'吃'它的饼干:) – Maciej 2010-04-06 13:22:55