http://www.xxx.com/login/login_index.jsp
要模拟登陆的网址。<form name="formreg" id="formreg" method="post" target="UserCenter" style="float:left;margin:0;padding:0;" onSubmit="return loginchk();">    <div class="nrikey">      <ul>        <li>用户名</li>        <li class="nname01">          <input name="us" id="us" type="text" class="nname" />        </li>      </ul>      <ul>        <li>密 码</li>        <li class="nname01">          <input name="_pwd" id="_pwd" type="password" class="nname" />        </li>      </ul>    </div>    <div class="namebot"><img src="/images/index2011new03qt_19.jpg" style="cursor: pointer;" width="50" height="44" onClick="if(document.formreg.onsubmit()!=false){document.formreg.submit();setTimeout('window.location.reload()',3000);}"/></div>
    </form>-----------------------------------------------------
-----------------------------------------------------
上面是要模拟的网站代码
 class PostGetWebRequest
    {
        private string userName;
        private string password;
        private string submit;
        private string loginUrl;
        private string locationUrl;
        private CookieContainer myCookieContainer;
        private HttpWebRequest request;
        private HttpWebResponse response;
        private Stream stream;
        private StreamReader streamReader;
        private string src = "";
        private string postData;
        private string htmlUserName;
        private string htmlPassword;
        private string htmlSubmit;        #region 类的成员 类的成员
        public string UserName
        {
            get { return userName; }
            set { userName = value; }        }        public string Password
        {
            get { return password; }
            set { password = value; }
        }
        public string Submit
        {
            get { return submit; }
            set { submit = value; }
        }
        public string LoginUrl
        {
            get { return loginUrl; }
            set { loginUrl = value; }
        }
        public string LocationUrl
        {
            get { return locationUrl; }
            set { locationUrl = value; }
        }
        public CookieContainer MyCookieContainer
        {
            set { myCookieContainer = value; }
            get { return myCookieContainer; }
        }
        public string Src
        {
            get { return src; }
            set { src = value; }
        }
        public string PostData
        {
            set { postData = value; }
            get { return postData; }
        }
        public string HtmlUserName
        {
            get { return htmlUserName; }
            set { htmlUserName = value; }
        }        public string HtmlPassword
        {
            set { htmlPassword = value; }
            get { return htmlPassword; }
        }
        public string HtmlSubmit
        {
            set { htmlSubmit = value; }
            get { return htmlSubmit; }
        }
        #endregion        public string PostWebRequest()
        {
            request = (HttpWebRequest)WebRequest.Create(LoginUrl);            MyCookieContainer = new CookieContainer();
            //设置提交相关参数
            PostData = HtmlUserName + "=" + userName + "&" + HtmlPassword + "=" + Password + "&" + HtmlSubmit + "=" + Submit;//这里没有考虑中文的  System.Web.HttpUtility.UrlEncode(viewState);
            // PostData = "userid=GUEST&userpass=GUEST"; 
            //这里HtmlUserName 指的是控件的name 指,UserName指的是value,其他两个同
            ASCIIEncoding encoding = new ASCIIEncoding();
            byte[] data = encoding.GetBytes(PostData);//post 方式的编码
            request.Method = "POST";//必须为大写,不然会出错
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;            request.KeepAlive = false;
            request.CookieContainer = MyCookieContainer;//把取服务器发给客户端跟session 想对应的cookie;相当于是一个容器
            //提交请求
            stream = request.GetRequestStream();
            stream.Write(data, 0, data.Length);
            stream.Close();            //接收
            response = (HttpWebResponse)request.GetResponse();
            streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);            Src = streamReader.ReadToEnd();
            return Src;  //单看提交页面的源代码            }        public string GetWebRequest()
        {
            request = (HttpWebRequest)WebRequest.Create(LocationUrl);
            request.Method = "GET";
            request.KeepAlive = false;
            request.CookieContainer = MyCookieContainer;            //接收返回的页面
            response = (HttpWebResponse)request.GetResponse();
            stream = response.GetResponseStream();
            streamReader = new StreamReader(stream, Encoding.UTF8);
            // stream.Close();
            Src = streamReader.ReadToEnd();
            return Src;        }
    }public void zhuaqu()
        {
     
            PostGetWebRequest postGetWebRequest = new PostGetWebRequest();// 没有验证码的网站,登录页面html格式,客户端的
            postGetWebRequest.HtmlUserName = "us";
            postGetWebRequest.HtmlPassword = "_pwd";
            postGetWebRequest.HtmlSubmit = "formreg";
            postGetWebRequest.UserName = "xxx";
            postGetWebRequest.Password = "xxx";
            postGetWebRequest.Submit = "formreg";
            postGetWebRequest.LoginUrl = "http://www.xxx.com/login/login_index.jsp";//这里非常关键,我在这里费了好久啊,虽然登录页面是"http://××××/";但处理页面是use_go.jsp,哎,.net 网站是在本页
            postGetWebRequest.LocationUrl = "http://www.xxx.com/6896502.htm";
            string content1 = postGetWebRequest.PostWebRequest();//着两个方法调用是有先后顺序的
            string content2 = postGetWebRequest.GetWebRequest();           // richTextBox1.Text = content1;
           // richTextBox2.Text = content2;
        }
登陆不了,当登陆按钮是图片,如何模拟登陆呢?要保存session,请指教?
模拟登陆,session图片按钮

解决方案 »

  1.   

    winform模拟登陆吗?
    可以用webbrowser控件,可以根据id查找控件并赋值,然后执行那个图片按钮里的脚本代码
      

  2.   

    最直接的方式还是用抓包工具来看看session是服务端的概念,跟你没多大关系
    只要保存好cookie就好,cookie是登陆状态的凭证
      

  3.   

    同样出现问题,求楼主帮忙啊。好人一生平安加Q1004307715(注明CSDN)