/// <summary> /// 发送Post请求,返回响应内容字符串 /// </summary> public static string HttpPost(string url, object data, SerializationType requestSerializeType = SerializationType.Json, Dictionary <string, string> header = null, CookieContainer cookies = null, X509Certificate cer = null, Encoding requestEncode = null, Encoding responseEncode = null) { string retVal = string.Empty; try { requestEncode = requestEncode == null ? InternalConstant.DefaultEncode : requestEncode; responseEncode = responseEncode == null ? InternalConstant.DefaultEncode : responseEncode; ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest; request.Timeout = InternalConstant.DefaultNetworkRequestTimeoutMS; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; if (cer != null) { request.ClientCertificates = new X509CertificateCollection { cer } } ; #region "请求头" if (header != null && header.Count > 0) { foreach (var item in header) { try { switch (item.Key.ToLower()) { case "content-type": request.ContentType = item.Value; break; case "user-agent": request.UserAgent = item.Value; break; case "referer": request.Referer = item.Value; break; default: request.Headers.Add(item.Key, item.Value); break; } } catch { } } } if (cookies != null) { request.CookieContainer = cookies; } #endregion string dataString = string.Empty; if (data.GetType() == typeof(string)) { dataString = data.ToString(); } else { if (requestSerializeType == SerializationType.Xml) { dataString = SerializationHelper.XmlSerialize(data); } else if (requestSerializeType == SerializationType.Json) { dataString = SerializationHelper.JavascriptSerialize(data); } } if (!string.IsNullOrEmpty(dataString)) { var buffer = requestEncode.GetBytes(dataString); using (Stream us = request.GetRequestStream()) { us.Write(buffer, 0, buffer.Length); } } using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { #region "存储输出头" if (response.Headers != null) { if (header == null) { header = new Dictionary <string, string>(); } foreach (var item in response.Headers.AllKeys) { header.UpdateItem(item, response.Headers[item]); } } if (response.Cookies != null) { if (cookies == null) { cookies = new CookieContainer(); } foreach (Cookie item in response.Cookies) { cookies.Add(item); } } #endregion using (StreamReader reader = new StreamReader(response.GetResponseStream(), responseEncode)) { retVal = reader.ReadToEnd(); } } } catch { } return(retVal); }