如何把浏览器里的cookies加到HttpWebRequest里? 在做一个工厂自动登陆的软件,用C#开发, 我想法是用C#内嵌的webBrowser登陆,取出所有的cookie(系统没有httponly的cookie)。然后,把cookie写到HttpWebRequest的CookieContainer里。再打开登陆后的页面URL.但是不成功,请各位大师指点,或者给点思路,多谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 采集COOKIE string cookieStr = wb1.Document.Cookie; //取webrowser的cookie string[] cookstr = cookieStr.Split(';'); foreach (string str in cookstr) { System.Net.CookieCollection ccl = new System.Net.CookieCollection(); string[] cookieNameValue = str.Split('='); cookieName = cookieNameValue[0].Trim().ToString(); cookieValue = cookieNameValue[1].Trim().ToString(); string[] cookstrValue = cookieValue.Split(','); cookieValue = cookstrValue[0].Trim().ToString(); Cookie ck = new Cookie(cookieName, cookieValue); myCookieContainer.Add(ck); //这是一个全局对象 }用webrowser的cookie放到HttpWebRequest里 HttpWebRequest request; HttpWebResponse response; request = WebRequest.Create(urlStr) as HttpWebRequest; request.Method = "GET"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.Headers["Accept-Language"] = "zh-cn"; request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"; request.CookieContainer = myCookieContainer; request.KeepAlive = true; request.AllowAutoRedirect = true; //获取服务器返回的资源 using (response = (HttpWebResponse)request.GetResponse()) http://bbs.csdn.net/topics/390474102你的情况是否跟他类似,把你的要取的url地址也贴出来吧 CookieContainer dd = new CookieContainer(); string str = PostStr; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(PostDiZhi); request.Accept = "application/json,text/javascript,*/*;q=0.01"; request.Headers["Accept-Language"] = "zh-cn"; request.UserAgent = "Mozilla/5.0 "; request.KeepAlive = true; request.Referer = Referer; request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; request.Headers.Add("x-requested-with", "XMLHttpRequest"); dd.Add(new Uri(PostDiZhi), new Cookie("uuid", cookie1)); request.CookieContainer = dd; Encoding encoding = Encoding.UTF8;//根据网站的编码自定义 byte[] postData = encoding.GetBytes(str);//Str即为发送的数据 request.ContentLength = postData.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(postData, 0, postData.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); response.Cookies = dd.GetCookies(request.RequestUri); Stream responseStream = response.GetResponseStream(); //如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可 if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip")) { responseStream = new GZipStream(responseStream, CompressionMode.Decompress); } StreamReader streamReader = new StreamReader(responseStream); streamReader.Close(); responseStream.Close();这是一个以前用过的post方法贴给你具体内容可以自行修改,希望能帮到你 ado.net有木有办法执行这种一条sql中涉及两个数据库的查询? AJAX 进度提示! 急,求助c# 导出 excel问题 如何利用 SharpZipLib 来进行字符串的解压缩 请问怎么自动填写注册信息? 急在线等:HRESULT 中的异常:0x800A03EC C#类型转换问题 新手提问,几个概念和简单问题不懂,请教…… 我想在c# project加一个共用的数据连接,象ASP里的connection.inc一样,怎么做? 和数据库有关的简单问题!(在线等待) 关于gridview 多选问题 动态链接库
string cookieStr = wb1.Document.Cookie; //取webrowser的cookie
string[] cookstr = cookieStr.Split(';');
foreach (string str in cookstr)
{
System.Net.CookieCollection ccl = new System.Net.CookieCollection();
string[] cookieNameValue = str.Split('=');
cookieName = cookieNameValue[0].Trim().ToString();
cookieValue = cookieNameValue[1].Trim().ToString(); string[] cookstrValue = cookieValue.Split(',');
cookieValue = cookstrValue[0].Trim().ToString();
Cookie ck = new Cookie(cookieName, cookieValue);
myCookieContainer.Add(ck); //这是一个全局对象
}
用webrowser的cookie放到HttpWebRequest里
HttpWebRequest request;
HttpWebResponse response; request = WebRequest.Create(urlStr) as HttpWebRequest;
request.Method = "GET";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers["Accept-Language"] = "zh-cn";
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
request.CookieContainer = myCookieContainer;
request.KeepAlive = true;
request.AllowAutoRedirect = true; //获取服务器返回的资源
using (response = (HttpWebResponse)request.GetResponse())
你的情况是否跟他类似,把你的要取的url地址也贴出来吧
string str = PostStr;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(PostDiZhi);
request.Accept = "application/json,text/javascript,*/*;q=0.01";
request.Headers["Accept-Language"] = "zh-cn";
request.UserAgent = "Mozilla/5.0 ";
request.KeepAlive = true;
request.Referer = Referer;
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Headers.Add("x-requested-with", "XMLHttpRequest");
dd.Add(new Uri(PostDiZhi), new Cookie("uuid", cookie1));
request.CookieContainer = dd;
Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
byte[] postData = encoding.GetBytes(str);//Str即为发送的数据
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postData, 0, postData.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Cookies = dd.GetCookies(request.RequestUri);
Stream responseStream = response.GetResponseStream();
//如果http头中接受gzip的话,这里就要判断是否为有压缩,有的话,直接解压缩即可
if (response.Headers["Content-Encoding"] != null && response.Headers["Content-Encoding"].ToLower().Contains("gzip"))
{
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
}
StreamReader streamReader = new StreamReader(responseStream);
streamReader.Close();
responseStream.Close();
这是一个以前用过的post方法贴给你具体内容可以自行修改,希望能帮到你