我需要阅读网页并将其内容存储在字符串中以便进一步处理 听起来很简单,但我对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;
}
答案 0 :(得分:1)
页面(直到你提出请求)向你发送一个cookie,而在另一个请求中,这个页面试图读取那个cookie。如果您不提供cookie,那么页面会认为您的浏览器不支持该机制。
我建议你:
解决方案是向该页面提供该页面发送给您的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);