如何将网页保存到支持cookie的字符串(httpWebRequest)

时间:2010-04-06 13:04:08

标签: c# .net .net-3.5 httpwebrequest

我需要阅读网页并将其内容存储在字符串中以便进一步处理 听起来很简单,但我对cookie的支持有问题。

已打开的页面显示我需要浏览器支持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;

  }

2 个答案:

答案 0 :(得分:1)

页面(直到你提出请求)向你发送一个cookie,而在另一个请求中,这个页面试图读取那个cookie。如果您不提供cookie,那么页面会认为您的浏览器不支持该机制。

我建议你:

  1. 打开Fiddler应用程序
  2. 检查保存的Cookie(尝试保存)
  3. 解决方案是向该页面提供该页面发送给您的cookie。

答案 1 :(得分: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);