首页 新闻 会员 周边

WebBrowser如何获取提交的数据

0
悬赏园豆:10 [已解决问题] 解决于 2008-11-19 09:38

如何在网页进行提交的时候获取到提交的数据.

扩展.或者扩展壕的控件.或者思路都可以.谢谢

问题补充: post方式的。
暗香浮动的主页 暗香浮动 | 菜鸟二级 | 园豆:361
提问于:2008-11-18 18:02
< >
分享
最佳答案
0

找了半天,终于找到答案

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的数据。

 

 

 

eaglet | 专家六级 |园豆:17139 | 2008-11-19 07:15
其他回答(2)
0

post 或者 get ?

天堂口 | 园豆:514 (小虾三级) | 2008-11-18 18:12
0

使用下面的方法可以下载整个页面的内容:
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;
  }
  }

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2008-11-18 18:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册