从WebBrowser中取得Cookie 和 HttpWebRequest设置cookie!
2012-09-12 17:46
387 查看
.将WebBrowser的cookie信息传给HttpWebRequest
第一种方法:
先建一个"CookieContainer" 把WebBrowser中的Cookie保存在里面
//在WebBrowser中登录cookie保存在WebBrowser.Document.Cookie中
CookieContainer myCookieContainer = new CookieContainer();
//String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
string cookieStr = webBrowser1.Document.Cookie;
string[] cookstr = cookieStr.Split(';');
foreach (string str in cookstr)
{
string[] cookieNameValue = str.Split('=');
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());
ck.Domain = "必须写对
myCookieContainer.Add(ck);
}
HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create("http://www.abc.com/search.asp");
hreq.Method = "POST";
hreq.ContentType = "application/x-www-form-urlencoded";
//自己创建的CookieContainer
hreq.CookieContainer = myCookieContainer;
string postdata = "id=2005&action=search&name=";
byte[] byte1 = Encoding.ASCII.GetBytes(postdata);
hreq.ContentLength = byte1.Length;
Stream poststream = hreq.GetRequestStream();
poststream.Write(byte1, 0, byte1.Length);
poststream.Close();
HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse();
第二种方法:
//获取webBrowser的方法,不需要引用其他内裤
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags, object lpReserved);
private static string GetCookieString(string url)
{
// Determine the size of the cookie
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
{
if (datasize < 0)
return null;
// Allocate stringbuilder large enough to hold the cookie
cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
return null;
}
return cookieData.ToString();
}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Headers.Clear();
request.Headers[HttpRequestHeader.Cookie] = GetCookieString(url);
request.ContentType = "application/x-www-form-urlencoded";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.Proxy = null;
HttpWebResponse httpResponse = (HttpWebResponse)request.GetResponse();
using (System.IO.Stream dataStream = httpResponse.GetResponseStream())
{
using (System.IO.StreamReader sr = new System.IO.StreamReader(dataStream, Encoding.UTF8))
{
string html = sr.ReadToEnd();
sr.Close();
}
}
httpResponse.Close();
特别说明一下:
CookieContainer cookieCon = new CookieContainer();
req.CookieContainer = cookieCon;
登录后会自动写入COOKIE到CookieContainer中,不需要手工设置cookie的
参考网站:http://hi.baidu.com/ghdrvbbsgtjnrze/item/833e53da3d3d8919d68ed028
第一种方法:
先建一个"CookieContainer" 把WebBrowser中的Cookie保存在里面
//在WebBrowser中登录cookie保存在WebBrowser.Document.Cookie中
CookieContainer myCookieContainer = new CookieContainer();
//String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
string cookieStr = webBrowser1.Document.Cookie;
string[] cookstr = cookieStr.Split(';');
foreach (string str in cookstr)
{
string[] cookieNameValue = str.Split('=');
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());
ck.Domain = "必须写对
myCookieContainer.Add(ck);
}
HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create("http://www.abc.com/search.asp");
hreq.Method = "POST";
hreq.ContentType = "application/x-www-form-urlencoded";
//自己创建的CookieContainer
hreq.CookieContainer = myCookieContainer;
string postdata = "id=2005&action=search&name=";
byte[] byte1 = Encoding.ASCII.GetBytes(postdata);
hreq.ContentLength = byte1.Length;
Stream poststream = hreq.GetRequestStream();
poststream.Write(byte1, 0, byte1.Length);
poststream.Close();
HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse();
第二种方法:
//获取webBrowser的方法,不需要引用其他内裤
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags, object lpReserved);
private static string GetCookieString(string url)
{
// Determine the size of the cookie
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
{
if (datasize < 0)
return null;
// Allocate stringbuilder large enough to hold the cookie
cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
return null;
}
return cookieData.ToString();
}
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Headers.Clear();
request.Headers[HttpRequestHeader.Cookie] = GetCookieString(url);
request.ContentType = "application/x-www-form-urlencoded";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.Proxy = null;
HttpWebResponse httpResponse = (HttpWebResponse)request.GetResponse();
using (System.IO.Stream dataStream = httpResponse.GetResponseStream())
{
using (System.IO.StreamReader sr = new System.IO.StreamReader(dataStream, Encoding.UTF8))
{
string html = sr.ReadToEnd();
sr.Close();
}
}
httpResponse.Close();
特别说明一下:
CookieContainer cookieCon = new CookieContainer();
req.CookieContainer = cookieCon;
登录后会自动写入COOKIE到CookieContainer中,不需要手工设置cookie的
参考网站:http://hi.baidu.com/ghdrvbbsgtjnrze/item/833e53da3d3d8919d68ed028
相关文章推荐
- 将WebBrowser的cookie信息传给HttpWebRequest
- 将WebBrowser的cookie信息传给HttpWebRequest
- C# WebBrowser HttpWebRequest Cookie 的结合运用。
- .Net中 webbrowser 和 httpwebrequest 共用 cookie
- 从WebBrowser中取得Cookie 和 WebClient设置cookie!
- 从WebBrowser中取得Cookie 和 WebClient设置cookie!
- 将WebBrowser的cookie信息传给HttpWebRequest.
- 将WebBrowser的cookie信息传给HttpWebRequest
- HttpWebRequest客户端设置附加Cookie请求网页
- 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- 利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录
- 如何将webbrowser控件的Cookie倒入CookieContainer供WebRequest使用
- HttpWebRequest.CookieContainer与HttpWebResponse.Cookies的区别和联系
- 跨域读取Cookie和session之HttpWebRequest另类方法(网站API开发)
- 转 跨域读取Cookie和session之HttpWebRequest另类方法(网站API开发)
- 关于wininet, WebBrowser, WebClient, HttpWebRequest(未完)
- 跨域读取Cookie和session之HttpWebRequest另类方法(网站API开发)
- C#使用浏览器(Internet Explorer)默认的代理服务器设置(WebRequest,WebClient,HttpWebRequest)
- 使用HttpWebRequest需要设置Accept和UserAgent属性