public string GetHtml(string url) { _httpItem = new HttpItem() { URL = url, Cookie = Cookie }; _httpResult = _httpHelper.GetHtml(_httpItem); return _httpResult.Html; }
public string GetCodeImage() { _httpItem = new HttpItem { URL = "http://my.51job.com/my/passport_verify.php?type=3&from_domain=my.51job.com", Referer = "http://my.51job.com/my/My_SignIn.php?url=&errmsg=needVerifyCode", Accept = "image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5", ResultType = ResultType.Byte, Cookie = Cookie }; _httpResult = _httpHelper.GetHtml(_httpItem); if (_httpResult != null && _httpResult.ResultByte != null && _httpResult.ResultByte.Length > 0) { return Convert.ToBase64String(_httpResult.ResultByte); } else { return null; } }
public bool Init() { _httpItem = new HttpItem() { URL = "http://my.51job.com/my/My_SignIn.php" }; _httpResult = _httpHelper.GetHtml(_httpItem); _htmlString = _httpResult.Html; if (String.IsNullOrEmpty(_httpResult.Cookie)) return false; Cookie = CookieUtil.ParseCookie(_httpResult.Cookie); string pat = @"<form action=""https://mylogin.51job.com/(?<id>.+?)/my/My_Pmc.php"""; Regex reg = new Regex(pat, RegexOptions.IgnoreCase); if (!reg.IsMatch(_htmlString)) return false; string id = reg.Match(_htmlString).Groups["id"].Value; _loginUrl = String.Format("https://mylogin.51job.com/{0}/my/My_Pmc.php", id); return true; }
public string Login(string username, string password, string code) { string data = String.Format("username={0}&userpwd={1}&login_verify={2}&url=&x=35&y=24", username, password, code); _httpItem = new HttpItem() { URL = _loginUrl, Referer = "http://my.51job.com/my/My_SignIn.php", Method = "POST", ContentType = "application/x-www-form-urlencoded", Postdata = data, Cookie = Cookie, Allowautoredirect = false }; _httpResult = _httpHelper.GetHtml(_httpItem); _htmlString = _httpResult.Html; if (!String.IsNullOrEmpty(_httpResult.Cookie)) { Cookie += CookieUtil.ParseCookie(_httpResult.Cookie); } CenterUrl = _httpResult.Header["Location"]; if (CenterUrl==null||CenterUrl.Contains("errmsg=needVerifyCode") || CenterUrl.Contains("errmsg=verifyCodeErr")) { CenterUrl = ""; Cookie = Regex.Replace(Cookie, "ps=.*?;", ""); Cookie += CookieUtil.ParseCookie(_httpResult.Cookie); return "需要验证码"; } if (Cookie.Contains("51job=")) { return "登陆成功"; } else { return "登陆失败"; } }
/// <summary> /// 根据相传入的数据,得到相应页面数据 /// </summary> /// <param name="item">参数类对象</param> /// <returns>返回HttpResult类型</returns> public HttpResult GetHtml(HttpItem item) { //返回参数 HttpResult result = new HttpResult(); try { //准备参数 SetRequest(item); } catch (Exception ex) { result = new HttpResult(); result.Cookie = string.Empty; result.Header = null; result.Html = ex.Message; result.StatusDescription = "配置参数时出错:" + ex.Message; return result; } try { #region 得到请求的response using (response = (HttpWebResponse)request.GetResponse()) { result.StatusCode = response.StatusCode; result.StatusDescription = response.StatusDescription; result.Header = response.Headers; if (response.Cookies != null) result.CookieCollection = response.Cookies; if (response.Headers["set-cookie"] != null) result.Cookie = response.Headers["set-cookie"]; MemoryStream _stream = new MemoryStream(); //GZIIP处理 if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase)) { //开始读取流并设置编码方式 //new GZipStream(response.GetResponseStream(), CompressionMode.Decompress).CopyTo(_stream, 10240); //.net4.0以下写法 _stream = GetMemoryStream(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress)); } else { //开始读取流并设置编码方式 //response.GetResponseStream().CopyTo(_stream, 10240); //.net4.0以下写法 _stream = GetMemoryStream(response.GetResponseStream()); } //获取Byte byte[] ResponseByte = _stream.ToArray(); _stream.Close(); if (ResponseByte != null & ResponseByte.Length > 0) { //是否返回Byte类型数据 if (item.ResultType == ResultType.Byte) result.ResultByte = ResponseByte; //从这里开始我们要无视编码了 if (encoding == null) { Match meta = Regex.Match(Encoding.Default.GetString(ResponseByte), "<meta([^<]*)charset=([^<]*)[\"']", RegexOptions.IgnoreCase); string c = (meta.Groups.Count > 1) ? meta.Groups[2].Value.ToLower().Trim() : string.Empty; if (c.Length > 2) { try { if (c.IndexOf(" ") > 0) c = c.Substring(0, c.IndexOf(" ")); encoding = Encoding.GetEncoding(c.Replace("\"", "").Replace("'", "").Replace(";", "").Replace("iso-8859-1", "gbk").Trim()); } catch { if (string.IsNullOrEmpty(response.CharacterSet)) encoding = Encoding.UTF8; else encoding = Encoding.GetEncoding(response.CharacterSet); } } else { if (string.IsNullOrEmpty(response.CharacterSet)) encoding = Encoding.UTF8; else encoding = Encoding.GetEncoding(response.CharacterSet); } } //得到返回的HTML result.Html = encoding.GetString(ResponseByte); } else { //得到返回的HTML result.Html = "本次请求并未返回任何数据"; } } #endregion } catch (WebException ex) { //这里是在发生异常时返回的错误信息 response = (HttpWebResponse)ex.Response; result.Html = ex.Message; if (response != null) { result.StatusCode = response.StatusCode; result.StatusDescription = response.StatusDescription; } } catch (Exception ex) { result.Html = ex.Message; } if (item.IsToLower) result.Html = result.Html.ToLower(); return result; }