Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="param"></param>
        /// <returns></returns>
        public static T Post <T>(HttpParam param)
        {
            param.Method = "POST";
            var str = Post(param);

            return(JsonConvert.DeserializeObject <T>(str));
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static string Post(HttpParam param)
        {
            param.Method = "POST";
            var str = RequestString(param);

            return(str);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string Get(string url)
        {
            var param = new HttpParam
            {
                Url    = url,
                Method = "GET",
            };

            return(Get(param));
        }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="param"></param>
        public static string RequestString(HttpParam param)
        {
            var result = "";

            using (var reader = new StreamReader(RequestStream(param), param.Encoding))
            {
                result = reader.ReadToEnd();
            }
            return(result);
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static string Get(HttpParam param)
        {
            param.Method = "GET";
            var result = "";

            using (var reader = new StreamReader(HttpRequestStream(param), param.Encoding))
            {
                result = reader.ReadToEnd();
            }
            return(result);
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="url"></param>
        /// <param name="getParam"></param>
        /// <returns></returns>
        public static string Get(string url, object getParam = null)
        {
            var param = new HttpParam
            {
                Url      = url,
                Method   = "GET",
                GetParam = getParam
            };

            return(Get(param));
        }
Example #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="url"></param>
        /// <param name="postParam"></param>
        /// <returns></returns>
        public static string Post(string url, object postParam = null)
        {
            var param = new HttpParam
            {
                Url       = url,
                Method    = "POST",
                PostParam = postParam
            };
            var str = Post(param);

            return(str);
        }
Example #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="url"></param>
        /// <param name="postParam"></param>
        /// <returns></returns>
        public static string Post(string url, NameValueCollection postParam = null)
        {
            var param = new HttpParam
            {
                Url               = url,
                Method            = "POST",
                RequestParameters = postParam
            };
            var str = Post(param);

            return(str);
        }
Example #9
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="param"></param>
 /// <returns></returns>
 public static JsonResponse <T> GetJR <T>(HttpParam param)
 {
     return(Get <JsonResponse <T> >(param));
 }
Example #10
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="param"></param>
        /// <returns></returns>
        public static T Get <T>(HttpParam param)
        {
            var str = Get(param);

            return(JsonConvert.DeserializeObject <T>(str));
        }
Example #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 public static string Get(HttpParam param)
 {
     param.Method = "GET";
     return(RequestString(param));
 }
Example #12
0
 /// <summary>
 /// 获取响应流
 /// </summary>
 /// <param name="param"></param>
 /// <returns></returns>
 public static Stream RequestStream(HttpParam param)
 {
     #region 处理地址栏参数
     var getParamSb = new StringBuilder();
     if (param.GetParam != null)
     {
         if (param.GetParam is string)
         {
             getParamSb.Append(param.GetParam.ToString());
         }
         else
         {
             param.GetParam.GetType().GetProperties().ToList().ForEach(d =>
             {
                 getParamSb.AppendFormat("{0}={1}&", d.Name, d.GetValue(param.GetParam, null));
             });
         }
     }
     if (!string.IsNullOrWhiteSpace(getParamSb.ToString().TrimEnd('&')))
     {
         param.Url = string.Format("{0}?{1}", param.Url, getParamSb.ToString().TrimEnd('&'));
     }
     #endregion
     HttpWebRequest httpWebRequest = WebRequest.Create(param.Url) as HttpWebRequest;
     if (!string.IsNullOrWhiteSpace(param.CertPath) && !string.IsNullOrWhiteSpace(param.CertPwd))
     {
         ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;
         var cer = new X509Certificate2(param.CertPath, param.CertPwd, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
         httpWebRequest.ClientCertificates.Add(cer);
         #region 暂时不要的
         //ServicePointManager.Expect100Continue = true;
         //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
         //req.ProtocolVersion = HttpVersion.Version11;
         //req.UserAgent = SUserAgent;
         //req.KeepAlive = false;
         //var cookieContainer = new CookieContainer();
         //req.CookieContainer = cookieContainer;
         //req.Timeout = 1000 * 60;
         //req.Headers.Add("x-requested-with", "XMLHttpRequest");
         #endregion
     }
     httpWebRequest.Timeout         = param.TimeOut * 1000;
     httpWebRequest.UserAgent       = param.UserAgent;
     httpWebRequest.Method          = param.Method ?? "POST";
     httpWebRequest.Referer         = param.Referer;
     httpWebRequest.CookieContainer = param.CookieContainer;
     httpWebRequest.ContentType     = param.ContentType;
     if (param.PostParam != null)
     {
         var postParamString = "";
         if (param.PostParam is string)
         {
             postParamString = param.PostParam.ToString();
         }
         else if (param.ParamType == HttpParamType.Form)
         {
             var dicParam = JsonConvert.DeserializeObject <Dictionary <string, string> >(JsonConvert.SerializeObject(param.PostParam));
             postParamString = dicParam.Aggregate(postParamString, (current, dic) => current + (dic.Key + "=" + dic.Value + "&")).TrimEnd('&');
         }
         else
         {
             postParamString = JsonConvert.SerializeObject(param.PostParam);
         }
         byte[] bs = param.Encoding.GetBytes(postParamString);
         httpWebRequest.ContentLength = bs.Length;
         using (Stream rs = httpWebRequest.GetRequestStream())
         {
             rs.Write(bs, 0, bs.Length);
         }
     }
     return(httpWebRequest.GetResponse().GetResponseStream());
 }
Example #13
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="param"></param>
 /// <returns></returns>
 public static JsonData <T> GetJR <T>(HttpParam param)
 {
     return(Get <JsonData <T> >(param));
 }
Example #14
0
        /// <summary>
        /// 获取 WebResponse
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static WebResponse HttpRequestResponse(HttpParam param)
        {
            string url = param.Url;

            //文件上传必须是Post、multipart/form-data
            if (param.UploadFiles.Count > 0)
            {
                param.Method      = "POST";
                param.ContentType = "multipart/form-data";
            }

            if (string.IsNullOrEmpty(param.Method))
            {
                param.Method = "GET";
            }
            param.Method = param.Method.ToUpper();

            if (string.IsNullOrEmpty(param.ContentType))
            {
                param.ContentType = "application/x-www-form-urlencoded";
            }

            //如果是GET请求,处理请求参数
            if ("GET".Equals(param.Method) && param.RequestParameters != null && param.RequestParameters.Count > 0)
            {
                string[] nameVals   = NameValueCollectionFormat(param.RequestParameters);
                string   nameValStr = string.Join("&", nameVals);
                if (url.Contains("?"))
                {
                    url += "&" + nameValStr;
                }
                else
                {
                    url += "?" + nameValStr;
                }
            }

            HttpWebRequest httpWebRequest = CreatHttpWebRequest(url);

            //处理自定义请求头信息
            if (param.CustomHeaders != null && param.CustomHeaders.Count > 0)
            {
                string[] nameVals = NameValueCollectionFormat(param.RequestParameters);
                foreach (string nameVal in nameVals)
                {
                    string[] arr = nameVal.Split('=');
                    if (arr.Length == 2)
                    {
                        httpWebRequest.Headers.Add(arr[0], arr[1]);
                    }
                }
            }
            httpWebRequest.Method          = param.Method;
            httpWebRequest.UserAgent       = param.UserAgent;
            httpWebRequest.Accept          = "*/*";
            httpWebRequest.Timeout         = param.TimeOut * 1000;
            httpWebRequest.CookieContainer = param.CookieContainer;
            httpWebRequest.ContentType     = $"{param.ContentType}";

            //如果是POST请求,处理请求参数
            if ("POST".Equals(param.Method))
            {
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    if (param.ContentType.Contains("multipart/form-data"))
                    {
                        //分隔符、ContentType
                        string boundary = Guid.NewGuid().ToString().Replace("-", "");
                        httpWebRequest.ContentType = $"multipart/form-data; boundary={boundary}";
                        //Post的参数
                        if (param.RequestParameters != null && param.RequestParameters.Count > 0)
                        {
                            string[] nameVals = NameValueCollectionFormat(param.RequestParameters);
                            string   _textFormdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"" + "\r\n\r\n{1}";
                            string   postParamStr          = "";
                            foreach (string nameVal in nameVals)
                            {
                                string[] arr = nameVal.Split('=');
                                if (arr.Length != 2)
                                {
                                    continue;
                                }
                                postParamStr += string.Format(_textFormdataTemplate, arr[0], arr[1]);
                            }

                            byte[] postParams = param.Encoding.GetBytes(postParamStr);
                            memoryStream.Write(postParams, 0, postParams.Length);
                        }
                        //Post的文件
                        if (param.UploadFiles != null && param.UploadFiles.Count > 0)
                        {
                            string fileFormdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"file\"; filename=\"{0}\"\r\nContent-Type: {1}\r\n\r\n";
                            foreach (UploadFileParams uploadFile in param.UploadFiles)
                            {
                                string contentType      = MimeData.GetContentType(uploadFile.FileName);
                                string fileFormdata     = string.Format(fileFormdataTemplate, uploadFile.FileName, contentType);
                                byte[] fileFormdataByte = param.Encoding.GetBytes(fileFormdata);
                                memoryStream.Write(fileFormdataByte, 0, fileFormdataByte.Length);

                                byte[] fileByte = uploadFile.FileStream.TryToBytes();
                                memoryStream.Write(fileByte, 0, fileByte.Length);
                            }
                        }
                        //添加结束分隔符
                        if (memoryStream.Length > 0)
                        {
                            byte[] endBoundary = param.Encoding.GetBytes($"\r\n--{boundary}--\r\n");
                            memoryStream.Write(endBoundary, 0, endBoundary.Length);
                        }
                    }
                    else
                    {
                        string[] nameVals   = NameValueCollectionFormat(param.RequestParameters);
                        string   nameValStr = string.Join("&", nameVals);
                        byte[]   postParams = param.Encoding.GetBytes(nameValStr);
                        memoryStream.Write(postParams, 0, postParams.Length);
                    }
                    if (memoryStream.Length > 0)
                    {
                        using (Stream stream = httpWebRequest.GetRequestStream())
                        {
                            byte[] postParamByte = memoryStream.ToArray();
                            stream.Write(postParamByte, 0, postParamByte.Length);
                        }
                    }
                }
            }
            return(httpWebRequest.GetResponse());
        }
Example #15
0
 /// <summary>
 /// Http请求
 /// </summary>
 /// <param name="param">参数</param>
 /// <returns></returns>
 public static Stream HttpRequestStream(HttpParam param)
 {
     return(HttpRequestResponse(param).GetResponseStream());
 }
Example #16
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="param"></param>
 /// <returns></returns>
 public static JsonResponse <T> PostJR <T>(HttpParam param)
 {
     return(Post <JsonResponse <T> >(param));
 }
Example #17
0
        /// <summary>
        /// 文件上传至远程服务器
        /// 传入:Url、CookieContainer、PostParam、PostedFile
        /// </summary>
        public static string PostFile(HttpParam param)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(param.Url);

            request.CookieContainer = param.CookieContainer;
            request.Method          = "POST";
            request.Timeout         = 20000;
            request.Credentials     = CredentialCache.DefaultCredentials;
            request.KeepAlive       = true;
            string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");

            byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
            request.ContentType = "multipart/form-data; boundary=" + boundary;
            string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}";

            byte[] buffer = buffer = new byte[param.FileStream.Length];
            param.FileStream.Read(buffer, 0, Convert.ToInt32(param.FileStream.Length));
            var strHeader = "Content-Disposition:application/x-www-form-urlencoded; name=\"{0}\";filename=\"{1}\"\r\nContent-Type:{2}\r\n\r\n";

            strHeader = string.Format(strHeader, "filedata", param.FileStream.Name, "application/octet-stream");
            var byteHeader = Encoding.ASCII.GetBytes(strHeader);

            try
            {
                using (Stream stream = request.GetRequestStream())
                {
                    if (param.PostParam != null)
                    {
                        var postParamString = "";
                        if (param.PostParam is string)
                        {
                            postParamString = param.PostParam.ToString();
                        }
                        else
                        {
                            postParamString = JsonConvert.SerializeObject(param.PostParam);
                        }
                        byte[] bs = param.Encoding.GetBytes(postParamString);
                        stream.Write(bs, 0, bs.Length);
                    }
                    stream.Write(boundaryBytes, 0, boundaryBytes.Length);
                    stream.Write(byteHeader, 0, byteHeader.Length);
                    stream.Write(buffer, 0, buffer.Length);
                    byte[] trailer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
                    stream.Write(trailer, 0, trailer.Length);
                    stream.Close();
                }
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                var             result   = "";
                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    result = reader.ReadToEnd();
                }
                response.Close();
                return(result);
            }
            catch (Exception ex)
            {
                return(ex.ToString());
            }
        }
Example #18
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="param"></param>
 /// <returns></returns>
 public static JsonData <T> PostJR <T>(HttpParam param)
 {
     return(Post <JsonData <T> >(param));
 }