/// <summary> /// 有关HTTP请求的辅助类 /// </summary> public class HttpRequestHelper { private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; /// <summary> /// 创建GET方式的HTTP请求 /// </summary> /// <param name="url">请求的URL</param> /// <param name="timeout">请求的超时时间</param> /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param> /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param> /// <returns></returns> public static HttpWebResponse CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies) { if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException("url"); } HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "GET"; request.UserAgent = DefaultUserAgent; if (!string.IsNullOrEmpty(userAgent)) { request.UserAgent = userAgent; } if (timeout.HasValue) { request.Timeout = timeout.Value; } if (cookies != null) { request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(cookies); } return request.GetResponse() as HttpWebResponse; } public static string HttpGet(string url) { var result = CreateGetHttpResponse(url, 6000, null, null); Stream stream = result.GetResponseStream(); //获取响应的字符串流 StreamReader sr = new StreamReader(stream); //创建一个stream读取流 string html = sr.ReadToEnd(); //从头读到尾,放到字符串html李米 return html; } public static string HttpPost(string url, IDictionary<string, string> par) { var result = CreatePostHttpResponse(url, par, new UTF8Encoding()); Stream stream = result.GetResponseStream(); //获取响应的字符串流 StreamReader sr = new StreamReader(stream); //创建一个stream读取流 string html = sr.ReadToEnd(); //从头读到尾,放到字符串html李米 return html; } /// <summary> /// 创建POST方式的HTTP请求 /// </summary> /// <param name="url">请求的URL</param> /// <param name="parameters">随同请求POST的参数名称及参数值字典</param> /// <param name="timeout">请求的超时时间</param> /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param> /// <param name="requestEncoding">发送HTTP请求时所用的编码</param> /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param> /// <returns></returns> public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, Encoding requestEncoding ,int timeout = 2000, string userAgent = "", CookieCollection cookies = null) { if (string.IsNullOrEmpty(url)) { throw new ArgumentNullException("url"); } if (requestEncoding == null) { throw new ArgumentNullException("requestEncoding"); } HttpWebRequest request = null; //如果是发送HTTPS请求 if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; } else { request = WebRequest.Create(url) as HttpWebRequest; } request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; if (!string.IsNullOrEmpty(userAgent)) { request.UserAgent = userAgent; } else { request.UserAgent = DefaultUserAgent; } if (cookies != null) { request.CookieContainer = new CookieContainer(); request.CookieContainer.Add(cookies); } //如果需要POST数据 if (!(parameters == null || parameters.Count == 0)) { StringBuilder buffer = new StringBuilder(); int i = 0; foreach (string key in parameters.Keys) { if (i > 0) { buffer.AppendFormat("&{0}={1}", key, parameters[key]); } else { buffer.AppendFormat("{0}={1}", key, parameters[key]); } i++; } byte[] data = requestEncoding.GetBytes(buffer.ToString()); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } } return request.GetResponse() as HttpWebResponse; } //public static string GetPtApi(string url, string parameters) //{ // if (string.IsNullOrEmpty(url)) // { // throw new ArgumentNullException("url"); // } // HttpWebRequest request = null; // //如果是发送HTTPS请求 // if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) // { // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); // request = WebRequest.Create(url) as HttpWebRequest; // request.ProtocolVersion = HttpVersion.Version10; // } // else // { // request = WebRequest.Create(url) as HttpWebRequest; // } // request.Method = "POST"; // request.ContentType = "application/x-www-form-urlencoded"; // request.UserAgent = DefaultUserAgent; // request.Headers.Add("plat","3"); // //如果需要POST数据 // if (!(parameters.IsStringEmpty())) // { // byte[] data =Encoding.UTF8.GetBytes(parameters); // using (Stream stream = request.GetRequestStream()) // { // stream.Write(data, 0, data.Length); // } // } // Stream stream1 = request.GetResponse().GetResponseStream(); //获取响应的字符串流 // StreamReader sr = new StreamReader(stream1); //创建一个stream读取流 // string html = sr.ReadToEnd(); //从头读到尾,放到字符串html李米 // return html; //} //public static string GetPtApi<T>(string url, T parameters) //{ // if (string.IsNullOrEmpty(url)) // { // throw new ArgumentNullException("url"); // } // HttpWebRequest request = null; // //如果是发送HTTPS请求 // if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) // { // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); // request = WebRequest.Create(url) as HttpWebRequest; // request.ProtocolVersion = HttpVersion.Version10; // } // else // { // request = WebRequest.Create(url) as HttpWebRequest; // } // request.Method = "POST"; // request.ContentType = "application/x-www-form-urlencoded"; // request.UserAgent = DefaultUserAgent; // request.Headers.Add("plat", "3"); // //如果需要POST数据 // if (parameters!=null) // { // var pro = typeof(T).GetProperties().OrderBy(c=>c.Name); // int i = 0; // StringBuilder data = new StringBuilder(); // string key = ""; // foreach (var m in pro) // { // if (m.Name.ToLower() == "key") // { // key = m.GetValue(parameters, null).ToString(); // continue; // } // if (i > 0) // { // data.AppendFormat("&{0}={1}", m.Name, m.GetValue(parameters, null)); // } // else // { // data.AppendFormat("{0}={1}", m.Name, m.GetValue(parameters, null)); // } // i++; // } // data.AppendFormat("&key={0}",key);//KEY放最后 // var sign= CP.Core.SecureHelper.GetMD5(data.ToString().ToUpper(), "UTF_8").ToUpper(); // data.AppendFormat("&sign=" + sign); // byte[] data1 = Encoding.UTF8.GetBytes(data.ToString()); // using (Stream stream = request.GetRequestStream()) // { // stream.Write(data1, 0, data1.Length); // } // } // Stream stream1 = request.GetResponse().GetResponseStream(); //获取响应的字符串流 // StreamReader sr = new StreamReader(stream1); //创建一个stream读取流 // string html = sr.ReadToEnd(); //从头读到尾,放到字符串html李米 // return html; //} private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; //总是接受 } }