• C#模拟登录总结


    /// <summary>  登录
            /// </summary>
            /// <param name="url"></param>
            /// <param name="paramList"></param>
            /// <returns></returns>
            public static string Login(String url, String paramList)
            {
                HttpWebResponse res = null;
                string strResult = "";
                try
                {
                    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                    req.Method = "POST";
                    req.ContentType = "application/x-www-form-urlencoded";
                    req.AllowAutoRedirect = false;
                    CookieContainer cookieCon = new CookieContainer();
                    req.CookieContainer = cookieCon;
                    StringBuilder UrlEncoded = new StringBuilder();
                    Char[] reserved = { '?', '=', '&' };
                    byte[] SomeBytes = null;
                    if (paramList != null)
                    {
                        int i = 0, j;
                        while (i < paramList.Length)
                        {
                            j = paramList.IndexOfAny(reserved, i);
                            if (j == -1)
                            {
                                UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, paramList.Length - i)));
                                break;
                            }
                            UrlEncoded.Append(HttpUtility.UrlEncode(paramList.Substring(i, j - i)));
                            UrlEncoded.Append(paramList.Substring(j, 1));
                            i = j + 1;
                        }
                        SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());
                        req.ContentLength = SomeBytes.Length;
                        Stream newStream = req.GetRequestStream();
                        newStream.Write(SomeBytes, 0, SomeBytes.Length);
                        newStream.Close();
                    }
                    else
                    {
                        req.ContentLength = 0;
                    }

                    res = (HttpWebResponse)req.GetResponse();
                    cookieheader = req.CookieContainer.GetCookieHeader(new Uri(url));
                    Stream ReceiveStream = res.GetResponseStream();
                    Encoding encode = System.Text.Encoding.GetEncoding("GBK");
                    StreamReader sr = new StreamReader(ReceiveStream, encode);
                    Char[] read = new Char[256];
                    int count = sr.Read(read, 0, 256);
                    while (count > 0)
                    {
                        String str = new String(read, 0, count);
                        strResult += str;
                        count = sr.Read(read, 0, 256);
                    }
                }
                catch (Exception e)
                {
                    strResult = e.ToString();
                }
                finally
                {
                    if (res != null)
                    {
                        res.Close();
                    }
                }
                return strResult;
            }
            /// <summary>  获取页面HTML
            /// </summary>
            /// <param name="url"></param>
            /// <param name="paramList"></param>
            /// <returns></returns>
            public static string getPage(String url, String paramList)
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Headers["If-None-Match"] = "36d0ed736e88c71:d9f";
                req.Referer = "http://website/login.do";
                CookieContainer cookieCon = new CookieContainer();
                req.CookieContainer = cookieCon;
                req.CookieContainer.SetCookies(new Uri(url), cookieheader);
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                StreamReader sr = new StreamReader(res.GetResponseStream(),Encoding.Default);
                string strResult = sr.ReadToEnd();
                sr.Close();
                return strResult;
            }调用:

            string postData = "userName=admin&password=pass&area=2006&Submit=%B5%C7+%C2%BC";           
            string strLogin, strResult;
            strLogin = Login("http://website/login.do", postData);

             strResult = getPage("http://website/tohjtree.do", "");
    //输出
             this.webBrowser1.Document.Write(strResult);

  • 相关阅读:
    找回密码
    找回密码,注册
    登陆
    返回与Table结构相同的DataTable副本
    同步表
    同步按照NewTable中ID存储情况将数据按照规则同步至OldTable,并清空OldTable中多余数据行,返回错误消息
    Page.IsPostBack
    GridView中点击某行的任意位置就选中该行
    c#后台计算2个日期之间的天数差
    分页存储过程,连接查询
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/3570218.html
Copyright © 2020-2023  润新知