如何在网页进行提交的时候获取到提交的数据.
扩展.或者扩展壕的控件.或者思路都可以.谢谢
找了半天,终于找到答案
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的数据。
post 或者 get ?
使用下面的方法可以下载整个页面的内容:
private void GetSource(string url)
{
httpSource = "";
try
{
WebClient webClient = new WebClient();
//获取包含页面源代码的字符串
Stream stream;
//if (sites.Count > 0)
//{
// num = sites.Count;
// string site=sites[(new Random()).Next(0, num)];
// stream = webClient.OpenRead(site);
// header = site.Substring(0,site.LastIndexOf("/")+1);
//}
//else
{
stream = webClient.OpenRead(url);
header = url.Substring(0, url.LastIndexOf("/") + 1);
}
StreamReader sr = new StreamReader(stream, Encoding.UTF8);
httpSource = sr.ReadToEnd();
sr.Close();
stream.Close();
}
catch// (Exception err)
{
//MessageBox.Show(err.Message);
return;
}
}