当前位置:编程学习 > C#/ASP.NET >>

C# WebBrowser Post数据问题 请指教一下

private void Form1_Load(object sender, EventArgs e)
        {
            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_DocumentCompleted在这个方法里处理事件。。然后去赋值。。 --------------------编程问答-------------------- 不懂 --------------------编程问答-------------------- --------------------编程问答-------------------- 楼主,我和你是一样的问题,现在解决了一半,给你参考一下。。。
        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的网站上,网站的提交按钮,不知道那一句写在哪,看网页源码看不到(我没找到,郁闷中。。。),如果找到就可以提交了,又不想用模拟鼠标去点击。。。。。 --------------------编程问答--------------------
引用 4 楼 weixin_chen 的回复:
楼主,我和你是一样的问题,现在解决了一半,给你参考一下。。。
        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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,