/// <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)); }
/// <summary> /// /// </summary> /// <param name="param"></param> /// <returns></returns> public static string Post(HttpParam param) { param.Method = "POST"; var str = RequestString(param); return(str); }
/// <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)); }
/// <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); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
/// <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)); }
/// <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)); }
/// <summary> /// /// </summary> /// <param name="param"></param> /// <returns></returns> public static string Get(HttpParam param) { param.Method = "GET"; return(RequestString(param)); }
/// <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()); }
/// <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)); }
/// <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()); }
/// <summary> /// Http请求 /// </summary> /// <param name="param">参数</param> /// <returns></returns> public static Stream HttpRequestStream(HttpParam param) { return(HttpRequestResponse(param).GetResponseStream()); }
/// <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)); }
/// <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()); } }
/// <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)); }