C# WebBrowser Post数据问题 请指教一下
private void Form1_Load(object sender, EventArgs e)--------------------编程问答-------------------- 尽量在WebBrowser_DocumentCompleted在这个方法里处理事件。。然后去赋值。。 --------------------编程问答-------------------- 不懂 --------------------编程问答-------------------- --------------------编程问答-------------------- 楼主,我和你是一样的问题,现在解决了一半,给你参考一下。。。
{
SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
wb.BeforeNavigate2 += new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(WebBrowser_BeforeNavigate2);
}
private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags,ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
{
//本意是想把得到了postdata经过修改后再提交,,可是在这里。提交的postdata是未经修改的..问题就在此了
string postDataText = System.Text.Encoding.ASCII.GetString(PostData as byte[]);
postDataText = postDataText.Replace(textBox3.Text, textBox4.Text);
PostData = System.Text.Encoding.ASCII.GetBytes(postDataText);
textBox2.Text = postDataText;
}
WebBrowser TestwebBrowser;
private void TestwebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement ClickBtn = null;
if (e.Url.ToString().ToLower().IndexOf("XXX.php") > 0) //登陆页面
{
HtmlDocument doc = TestwebBrowser.Document;
for (int i = 0; i < doc.All.Count; i++)
{
//this.tbShowInformation.Text = doc.All[i];
if (doc.All[i].TagName.ToUpper().Equals("INPUT"))
{
switch (doc.All[i].Name)
{
case "p_handle": //查看网站的源程序,找到输入用户名的地方,我这找到的是:p_handle
doc.All[i].InnerText = "用户名";
break;
case "p_password": //查看网站的源程序,找到输入密码的地方,我这找到的是:p_password
doc.All[i].InnerText = "密码";
break;
case "????": //查看网站的源程序,找到提交的按钮地方,我这一直没找到
ClickBtn = doc.All[i]; //提交按钮
break;
}
}
}
ClickBtn.InvokeMember("Click"); //执行按扭操作
}
}
注意:目前我的问题是,可以自动填入用户名、密码,但是因为没有找到提交的按钮,就是下面的这一句:
case "????": //查看网站的源程序,找到提交的按钮地方,我这一直没找到
我在一个.php的网站上,网站的提交按钮,不知道那一句写在哪,看网页源码看不到(我没找到,郁闷中。。。),如果找到就可以提交了,又不想用模拟鼠标去点击。。。。。 --------------------编程问答--------------------
//查看网站的源程序,找到提交的按钮地方,我这一直没找到
这个地方不能找input里面的内容,要找button 或者 submit --------------------编程问答-------------------- if (PostData != null)
{
//
string postDataText = System.Text.Encoding.ASCII.GetString(PostData as byte[]);
postDataText = PostData.ToString();
PostData = (object)postDataText;
//转换 现在调用
wb.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
}
补充:.NET技术 , C#