/// <summary> /// 设置请求参数(只有Post请求方式才设置) /// </summary> /// <param name="webRequest">HttpWebRequest对象</param> /// <param name="requestParameter">请求参数对象</param> static void SetParameter(ref HttpWebRequest webRequest, HttpRequestParameter requestParameter) { if (requestParameter.Parameters == null || requestParameter.Parameters.Count <= 0) { return; } if (requestParameter.Method == ReQequestMethodType.Post) { StringBuilder data = new StringBuilder(string.Empty); foreach (KeyValuePair <string, string> keyValuePair in requestParameter.Parameters) { data.AppendFormat("{0}={1}&", keyValuePair.Key, keyValuePair.Value); } string para = data.Remove(data.Length - 1, 1).ToString(); Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); requestParameter.Encoding = Encoding.GetEncoding(requestParameter.EncodingStr); byte[] bytePosts = requestParameter.Encoding.GetBytes(para); webRequest.ContentLength = bytePosts.Length; using (Stream requestStream = webRequest.GetRequestStream()) { requestStream.Write(bytePosts, 0, bytePosts.Length); requestStream.Close(); } } }
/// <summary> /// 设置请求头 /// </summary> /// <param name="webRequest">HttpWebRequest对象</param> /// <param name="requestParameter">请求参数对象</param> static void SetHeader(HttpWebRequest webRequest, HttpRequestParameter requestParameter) { webRequest.Method = requestParameter.Method.ToString(); webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.Accept = "text/html, application/xhtml+xml, */*"; webRequest.KeepAlive = true; webRequest.UserAgent = "DotNetCore-Requests"; webRequest.AllowAutoRedirect = true; webRequest.ProtocolVersion = HttpVersion.Version11; }
public IEnumerable <Request> Excute(HttpRequestParameter requestParameter) { List <Request> request_list = new List <Request>(); foreach (var url in requestParameter.Url) { request_list.Add(HttpUtil.Excute(requestParameter, url)); } return(request_list); }
/// <summary> /// 设置请求Cookie /// </summary> /// <param name="webRequest">HttpWebRequest对象</param> /// <param name="requestParameter">请求参数对象</param> private static void SetCookie(HttpWebRequest webRequest, HttpRequestParameter requestParameter) { // 必须实例化,否则响应中获取不到Cookie webRequest.CookieContainer = new CookieContainer(); if (requestParameter.Cookie != null && !string.IsNullOrEmpty(requestParameter.Cookie.CookieString)) { webRequest.Headers[HttpRequestHeader.Cookie] = requestParameter.Cookie.CookieString; } if (requestParameter.Cookie != null && requestParameter.Cookie.CookieCollection != null && requestParameter.Cookie.CookieCollection.Count > 0) { webRequest.CookieContainer.Add(requestParameter.Cookie.CookieCollection); } }
/// <summary> /// 执行方法 /// </summary> /// <param name="requestParameter">请求报文</param> /// <returns>响应报文</returns> public static Request Excute(HttpRequestParameter requestParameter, Uri url) { HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); SetHeader(webRequest, requestParameter); SetCookie(webRequest, requestParameter); // 4.ssl/https请求设置 //if (Regex.IsMatch(requestParameter.Url.ToString(), "^https://")) //{ // ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; // ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult; //} SetParameter(ref webRequest, requestParameter); return(new Request() { WebRequest = webRequest }); }