Ejemplo n.º 1
0
        /// <summary>
        /// 传入功能序号和要写入的bytearray进行post操作
        /// </summary>
        /// <param name="index"></param>
        /// <param name="bytearray"></param>
        /// <returns></returns>
        private string PostModeLink(int index, byte[] bytearray)
        {
            string Url = SetUrl(ModeList[index]);
            SendPostLoginParameter sendpost = new SendPostLoginParameter();

            sendpost.PostUrl    = Url;
            sendpost.ReferUrl   = Url;
            sendpost.Bytesarray = bytearray;
            string output = Send_Post(sendpost);

            return(output);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 指定载入网址、来源网址和要post的字符串发送POST请求
        /// </summary>
        /// <param name="posturl"></param>
        /// <param name="ReferUrl"></param>
        /// <param name="bytes"></param>
        /// <returns></returns>
        private string Send_Post(SendPostLoginParameter SendPost)
        {
            string output = "";

            #region 构造请求头
            HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(SendPost.PostUrl);

            httpRequest.Method = "POST";
            SetHeaderValue(httpRequest.Headers, "Host", "ojjx.wzu.edu.cn");
            SetHeaderValue(httpRequest.Headers, "Connection", "keep-alive");
            httpRequest.Headers["Cache-Control"]             = "max-age=0";
            httpRequest.Headers["Origin"]                    = "http://ojjx.wzu.edu.cn";
            httpRequest.Headers["Upgrade-Insecure-Requests"] = "1";
            httpRequest.UserAgent                  = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36";
            httpRequest.ContentType                = "application/x-www-form-urlencoded";
            httpRequest.Accept                     = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
            httpRequest.Headers["DNT"]             = "1";
            httpRequest.Referer                    = SendPost.ReferUrl;
            httpRequest.Headers["Accept-Encoding"] = "gzip, deflate";
            httpRequest.Headers["Accept-Language"] = "zh-CN,zh;q=0.8";
            if (SendPost.NeedRedirect == false)
            {
                httpRequest.AllowAutoRedirect = false;
            }
            else
            {
                httpRequest.AllowAutoRedirect = true;
            }
            httpRequest.CookieContainer = cookie;
            #endregion

            #region 创建IO流写入POST内容
            Stream stream = httpRequest.GetRequestStream();
            stream.Write(SendPost.Bytesarray, 0, SendPost.Bytesarray.Length);
            stream.Close();
            #endregion

            #region 返回并接收数据
            HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            if (Convert.ToString(httpResponse.StatusCode) == "Found")
            {
                IsRedirect = true;
            }
            else
            {
                IsRedirect = false;
            }
            StreamReader ReadersOfStream = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312"));
            output = ReadersOfStream.ReadToEnd();
            #endregion

            return(output);
        }
Ejemplo n.º 3
0
        private string GetClassTable(ClassTableGoal classtable)
        {
            #region 创建变量并初始化正则表达式
            string postvalue = "";
            PageCode = Send_Get(SetUrl(ModeList[0]));
            string url        = SetUrl(ModeList[0]);
            Regex  input      = new Regex("input type=\"hidden\" name=\".*?\" value=\".*?\"");
            Regex  inputname  = new Regex("name=\".*?\"");
            Regex  inputvalue = new Regex("value=\".*?\"");
            Regex  SelectYear = new Regex("<option selected=\"selected\" value=\"\\d+-\\d+\">");
            Regex  SelectTerm = new Regex("<option selected=\"selected\" value=\"\\d\">");
            #endregion

            #region 检查请求的学期是否为当前学期 如是当前学期则直接返回数据
            Match  YearMatch = SelectYear.Match(PageCode);
            Match  TermMatch = SelectTerm.Match(PageCode);
            String Year      = YearMatch.ToString();
            String Term      = TermMatch.ToString();
            if (Year.IndexOf(classtable.Year) != -1 && Term.IndexOf(classtable.Trem) != -1)
            {
                return(PageCode);
            }
            #endregion

            #region 构造发送的字符串
            MatchCollection inputmatch = input.Matches(PageCode);
            postvalue  = inputname.Match(inputmatch[0].Value).ToString().Replace("name=\"", "").Replace("\"", "") + "=xnd&" + inputname.Match(inputmatch[1].Value).ToString().Replace("name=\"", "").Replace("\"", "") + "=&" + inputname.Match(inputmatch[2].Value).ToString().Replace("name=\"", "").Replace("\"", "") + "=" + inputvalue.Match(inputmatch[2].Value).ToString().Replace("name=\"", "").Replace("\"", "").Replace("+", "%2b") + "&xnd=";
            postvalue += classtable.Year + "-" + Convert.ToString(Convert.ToInt32(classtable.Year) + 1) + "&xqd=" + classtable.Trem;
            postvalue  = postvalue.Replace("value=", "");
            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(postvalue);
            #endregion

            #region 构造参数结构
            SendPostLoginParameter send = new SendPostLoginParameter();
            send.Bytesarray   = bytes;
            send.PostUrl      = url;
            send.ReferUrl     = url;
            send.NeedRedirect = false;
            #endregion

            PageCode = Send_Post(send);

            return(PageCode);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 登陆主页函数
        /// </summary>
        /// <param name="ParaLogin"></param>
        /// <returns></returns>
        private string Login(LoginParameter ParaLogin)
        {
            #region 变量声明
            Regex  reg        = new Regex("<input type=\"hidden\" name=\"__VIEWSTATE\" value=\"(.*?)\" />");
            string postUrl    = MainUrl;              //请求地址
            string poststring = "";                   //构造POST请求字符串
            string code       = ParaLogin.secertcode; //验证码
            string statecode;                         //网页内的VIEWSTATE
            #endregion

            #region 登陆主页获取网页内容
            HttpWebRequest GetStateCode   = (HttpWebRequest)HttpWebRequest.Create(postUrl);                               //连接主页
            WebResponse    result         = GetStateCode.GetResponse();                                                   //获取响应
            Stream         receviceStream = result.GetResponseStream();                                                   //创建IO流
            StreamReader   readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("gb2312")); //创建流读取器
            string         strHTML        = readerOfStream.ReadToEnd();                                                   //获取网页内容
            readerOfStream.Close();
            receviceStream.Close();
            result.Close();//关闭流
            #endregion

            #region 匹配ViewState
            Match whatstate = reg.Match(strHTML);          //创建匹配VIEWSTATE的正则表达式
            statecode  = whatstate.Groups[1].Value;        //匹配结果
            statecode  = HttpUtility.UrlEncode(statecode); //URL编码
            poststring = "__VIEWSTATE=" + statecode + "&txtUserName="******"&Textbox1=&TextBox2=" + ParaLogin.password + "&txtSecretCode=" + code + "&RadioButtonList1=%D1%A7%C9%FA" + "&Button1=&lbLanguage=&hidPdrs=&hidsc=";
            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(poststring);
            #endregion

            #region 构造参数结构
            SendPostLoginParameter sendpost = new SendPostLoginParameter();
            sendpost.PostUrl      = postUrl;
            sendpost.ReferUrl     = MainUrl;
            sendpost.Bytesarray   = bytes;
            sendpost.NeedRedirect = true;
            #endregion

            return(Send_Post(sendpost));
        }