webBrowser1.Navigate(   "http://www.ems.com.cn/"); 
                        while   (webBrowser1.ReadyState   !=   WebBrowserReadyState.Complete) 
                        { 
                                Application.DoEvents(); 
                        } 
                        HtmlElement   txt   =   webBrowser1.Document.All["mailNum"]; 
                        txt.SetAttribute("value",   "EC244752724CN"); 
                        HtmlElement   btn   =   webBrowser1.Document.All["btchaxun_r1_c2"]; 
                        btn.InvokeMember("Click"); 
                        while   (webBrowser1.Url.ToString().IndexOf("qcgzOutQueryAction.do")   <   0) 
                        { 
                                Application.DoEvents(); 
                        } 
                        while   (webBrowser1.ReadyState   !=   WebBrowserReadyState.Complete) 
                        { 
                                Application.DoEvents(); 
                        } 
                        if   (webBrowser1.Document.Body.InnerHtml.IndexOf(@"已妥投")> 0) 
                        { 
                                MessageBox.Show("OK"); 
                        }
大哥.上面的代码是你给我的.还有没有别的办法也能实现这个目地啊.
这个有时候很慢..
大哥帮帮我46000129

解决方案 »

  1.   

    慢是正常的,你打开网页也需要时间啊?
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Step1);
                webBrowser1.Navigate("http://www.ems.com.cn/");
            }        void Step1(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                WebBrowser wb = sender as WebBrowser;
                wb.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(Step1);
                wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Step2);
                HtmlElement txt = webBrowser1.Document.All["mailNum"];
                txt.SetAttribute("value", "EC244752724CN");
                HtmlElement btn = webBrowser1.Document.All["btchaxun_r1_c2"];
                btn.InvokeMember("Click"); 
            }
            void Step2(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                WebBrowser wb = sender as WebBrowser;
                if (wb.Url.ToString().IndexOf("qcgzOutQueryAction.do") >-1) {
                    wb.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(Step2);
                    if (webBrowser1.Document.Body.InnerHtml.IndexOf(@"已妥投") > 0)
                    {
                        MessageBox.Show("OK");
                    }             }
            }
        }
      

  2.   

    为什么不直接webclient或者httpwebrequest?非得用WebBrowser么?
      

  3.   

    httpwebrequest想用这个可是不会啊
      

  4.   

    // 获取网页的HTML内容
    static string GetPage(string url)
    {
      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
      try
      {
        using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
        {
          using (StreamReader sr = new StreamReader(res.GetResponseStream()))
          {
            return sr.ReadToEnd();
          }
        }
      }
      catch (System.Exception e)
      {
        return e.Message;
      }
      finally
      {
        req.Abort();
      }
    }
      

  5.   

    获取网页不是重点..重点是post...
      

  6.   

    post就用webclientSystem.Net.WebClient WebClientObj = new System.Net.WebClient();
                System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();
    //下面这3行自己改,改成你要post的数据,前面是Name后面是对应的 value
                PostVars.Add("userid", ID);
                PostVars.Add("password", Pwd);
                PostVars.Add("phonenumber", destNumber);
    byte[] byt = null;
                try
                {
                    byt = WebClientObj.UploadValues(Url, "POST", PostVars);  //Url自己设,你要Post的页面Url
                }
                catch (WebException exc)
                {
                    Trace.WriteLine(exc.Message);
                }            String StrReturn = System.Text.Encoding.GetEncoding("gb2312").GetString(byt);
                Trace.WriteLine(StrReturn);            if (StrReturn.IndexOf("已妥投", 0) != -1)
                {
                    //成功了
                }
      

  7.   

     System.Net.WebClient WebClientObj = new System.Net.WebClient();
                System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();
                ////下面这3行自己改,改成你要post的数据,前面是Name后面是对应的 value
                //PostVars.Add("userid", "ID");
                PostVars.Add("password", Pwd);
                PostVars.Add("mailNum", "EC244752724CN");
               
                byte[] byt = null;
                try
                {
                    byt = WebClientObj.UploadValues("http://www.ems.com.cn/", "POST", PostVars);  //Url自己设,你要Post的页面Url
                }
                catch 
                {
                    //Trace.WriteLine(exc.Message);
                }            String StrReturn = System.Text.Encoding.GetEncoding("gb2312").GetString(byt);
                richTextBox1.Text = StrReturn;
               
                if (StrReturn.IndexOf("已妥投", 0) != -1)
                {
                    MessageBox.Show("OK");
                }
    怎么不对呢?????????????
      

  8.   

    我主要是想提交"EC244752724CN"这个字符串得到这个邮件的信息可是上面的代码得不到这个邮件的信息
      

  9.   

    像ems这样的网站会不防异站post吗....一定有什么措施的....
      

  10.   

    he_8134 
    你写的代码.用线程调用button1_Click(null,null)这个事件后.
    void Step1 和void Step2 这两个事件为什么没触发呢.
      

  11.   

    不好意思,在过年,一直没来。在这里祝大家新年快乐,万事如意!
                //打开网页,取得需要的value
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.ems.com.cn/");
                req.Accept = "*/*";
                req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)";
                CookieContainer ReqCookies= new CookieContainer();
                req.CookieContainer = ReqCookies;
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                string strHtml;
                using (StreamReader sr = new StreamReader(res.GetResponseStream()))
                {
                    strHtml= sr.ReadToEnd();
                }
                Regex r;
                MatchCollection m;
                r = new Regex(@"name=""myEmsbarCode"" value=""(.+?)""", RegexOptions.IgnoreCase);
                m = r.Matches(strHtml);
                String myEmsbarCode = m[0].Groups[1].Value;
                  //你要post的数据,格式可以使用sniffer得到
                req = (HttpWebRequest)HttpWebRequest.Create("http://www.ems.com.cn/qcgzOutQueryAction.do");
                req.Accept = "*/*";
                req.Referer = "http://www.ems.com.cn/";
                req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)";
                req.ContentType = "application/x-www-form-urlencoded";
                req.CookieContainer = ReqCookies;
                req.Method = "POST";
                string PostData = "reqCode=browseBASE&myEmsbarCode=" + myEmsbarCode + "&mailNum=EC244752724CN";
                byte[] b = Encoding.Default.GetBytes(PostData);
                req.ContentLength = b.Length;
                using (System.IO.Stream sw = req.GetRequestStream())
                {                    
                    sw.Write(b, 0, b.Length);                
                }
                res = (HttpWebResponse)req.GetResponse();
                using (StreamReader sr = new StreamReader(res.GetResponseStream(),Encoding.GetEncoding("gb2312")))
                {
                    strHtml = sr.ReadToEnd();
                }
                if (strHtml.IndexOf("已妥投", 0) != -1)
                {
                    MessageBox.Show("OK");
                }
      

  12.   

    你用我的代码Post不对是因为你的目标Url不对
    目标Url不是http://www.ems.com.cn/,是你接收post数据那个页面
    例如http://www.ems.com.cn/qcgzOutQueryAction.do
      

  13.   

    webBrowser1  和这个  HttpWebRequest   在同一个机器上哪个快呢
      

  14.   

    sniffer这个不太明白
    webBrowser1     和这个     HttpWebRequest       在同一个机器上哪个快呢