/// <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, PostHead header)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw new ArgumentNullException("url");
            }
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

            request.Method = "GET";
            header.FillInfo(request);
            return(request.GetResponse() as HttpWebResponse);
        }
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="request">发送请求</param>
        /// <param name="prms">发送数据的字段和值</param>
        /// <param name="files">要发送的文件</param>
        /// <returns></returns>
        public static void PostData(HttpWebRequest request, PostHead head, IDictionary <string, string> prms, IEnumerable <FormFile> files)
        {
            String BOUNDARY = "---------" + CommonMethods.GuidToString(Guid.NewGuid()); //数据分隔线

            request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
            request.Method      = "POST";

            head.FillInfo(request);
            request.ContentType = MULTIPART_FORM_DATA + "; boundary=" + BOUNDARY;
            StringBuilder sb = new StringBuilder();

            //上传的表单参数部分,格式请参考文章
            if (prms != null)
            {
                foreach (KeyValuePair <string, string> entry in prms)
                {//构建表单字段内容
                    sb.Append("--");
                    sb.Append(BOUNDARY);
                    sb.Append("\r\n");
                    sb.Append("Content-Disposition: form-data; name=\"" + entry.Key + "\"\r\n\r\n");
                    sb.Append(entry.Value);
                    sb.Append("\r\n");
                }
            }
            Encoding useEncoding = head.PageEncoding;


            using (Stream outStream = request.GetRequestStream())
            {
                byte[] send = useEncoding.GetBytes(sb.ToString());
                WriteData(outStream, send);
                if (files != null)
                {
                    //上传的文件部分,格式请参考文章
                    foreach (FormFile file in files)
                    {
                        StringBuilder split = new StringBuilder();
                        split.Append("--");
                        split.Append(BOUNDARY);
                        split.Append("\r\n");
                        split.Append("Content-Disposition: form-data;name=\"" + file.FormName + "\";filename=\"" + file.FileName + "\"\r\n");
                        split.Append("Content-Type: " + file.ContentType + "\r\n\r\n");
                        WriteString(outStream, split.ToString(), useEncoding);
                        WriteData(outStream, file.Data);
                        WriteString(outStream, "\r\n", useEncoding);
                    }
                }
                byte[] end_data = System.Text.Encoding.UTF8.GetBytes("--" + BOUNDARY + "--\r\n");//数据结束标志
                outStream.Write(end_data, 0, end_data.Length);
                outStream.Flush();
            }
        }
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="request">发送请求</param>
        /// <param name="prms">发送数据的字段和值</param>
        /// <param name="files">要发送的文件</param>
        /// <returns></returns>
        public static void Post(HttpWebRequest request, PostHead head, string prms)
        {
            request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
            request.Method      = "POST";
            head.FillInfo(request);

            if (!string.IsNullOrEmpty(prms))
            {
                Encoding useEncoding = head.PageEncoding;
                using (Stream outStream = request.GetRequestStream())
                {
                    byte[] send = useEncoding.GetBytes(prms);
                    WriteData(outStream, send);
                    outStream.Flush();
                }
            }
        }
        /// <summary>
        /// 创建头
        /// </summary>
        /// <returns></returns>
        public static PostHead CreateHeader()
        {
            PostHead head = new PostHead(StringComparer.CurrentCultureIgnoreCase);

            return(head);
        }
        /// <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, PostHead header)
        {
            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";
            header.FillInfo(request);
            request.ContentType = "application/x-www-form-urlencoded";

            //如果需要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 = header.PageEncoding.GetBytes(buffer.ToString());
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
            }
            return(request.GetResponse() as HttpWebResponse);
        }
 public FormPost()
 {
     //_userAgent = DefaultUserAgent;
     _requestHead = PostHead.CreateHeader();
 }