WebBrowser 控件获取POST数据
来源:互联网 发布:sentinel 1数据 编辑:程序博客网 时间:2024/05/10 22:27
WebBrowser 其实是对 ActiveX 控件 SHDocVw 的封装,而这个SHDocVw的很多底层调用WebBrowser控件并没有提供实现,你这个应用需要直接操作 SHDoceVw 控件才可以。操作方法如下:
1、在 windows/system32 目录下找到 shdocvw.dll 这个动态库,将其添加到引用中
2、在 Form1_Load 中添加如下语句
SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
wb.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(WebBrowser_BeforeNavigate2);
3、添加如下成员函数
private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags,
ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
{
string postDataText = System.Text.Encoding.ASCII.GetString(PostData as byte[]);
}
完成上述3步后,你post 数据时, 就会响应 BeforeNavigate2 事件,
postDataText 中就是你post的数据。
1.在WebBrowser中获取Cookie
CookieContainer myCookieContainer = new 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 = "www.google.com ";
myCookieContainer.Add(ck);
}
WebClient设置cookie!
WebClient wc = new WebClient();
wc.Headers.Add("Cookie", "PHPSESSID=" + cookie + ";");
// 注意,这里是Cookie,不是Set-Cookie
byte[] re = wc.UploadData(Global.RootPath + "test.php", new byte[0]);
System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();
string str = converter.GetString(re);
2. 在WebBrowser中设置Cookie
public partial class WebBrowserControl : Form
{
private String url;
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
public WebBrowserControl(String path)
{
this.url = path;
InitializeComponent();
// set cookie
InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);
// navigate
webBrowser.Navigate(url);
}
}
3.将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 = "www.abc.com";// 必须写对
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 控件获取POST数据
- WebBrowser 控件获取POST数据
- 用 .Net WebBrowser 控件获取POST数据
- 用 .Net WebBrowser 控件获取POST数据
- 用.Net WebBrowser控件获取POST数据
- 用 .Net WebBrowser 控件获取POST数据
- VB使用WebBrowser控件POST数据
- 如何让 WebBrowser 控件可以截获自己POST出去的数据
- WebBrowser使用POST方法提交数据
- Webbrowser截获POST数据和模拟POST提交数据
- 获取webbrowser控件 网页的源码
- 获取webbrowser控件网页的源码
- 【C#】通过webbrowser控件获取验证码
- 通过webbrowser控件获取验证码
- 获取POST数据
- 获取post数据
- nodejs 获取post数据
- C# 获取POST数据
- 《开店的思考》
- poj 2777 -- Count Color ( 线段树 )
- drupal中获取url别名
- drupal conatct_form模块定制表单
- 解决TCP reader=new BufferedReader(new InputStreamReader(input)),读取一直为空
- WebBrowser 控件获取POST数据
- 剖析shrink 操作原理
- Drupal常用判断,用户是否登录,用户角色,用户权限等
- C# 操作Dataset介绍
- drupal实现monthly archive
- 初识ScrollView
- 学会数据分析做精准流量的关键词
- CareerCup 1.2
- drupal搭建多站点