using RestSharp; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace Quotation.Common.Extensions { public class HttpRequstExtensions { /// <summary> /// 参数 /// </summary> /// <param name="url"></param> /// <param name="data"></param> /// <returns></returns> public static string httpPostAsync(string url, List<KeyValuePair<string, string>> data) { HttpClient client = new HttpClient(); var form_data = new FormUrlEncodedContent(data); var reponse = client.PostAsync(url, form_data); if (reponse.IsCompleted) { var result = reponse.Result; var resdata = result.Content.ReadAsStringAsync(); return resdata.ToString(); } return ""; } /// <summary> /// 发送Get请求,获取内容 /// </summary> /// <param name="url"></param> /// <returns></returns> public static string HttpGet(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); string text = readStream.ReadToEnd(); response.Close(); readStream.Close(); return text; } /// <summary> /// Post请求 /// </summary> /// <param name="url"></param> /// <param name="pars"></param> /// <returns></returns> public static string HttpPost(string url, string pars, string contentType = "") { byte[] bytes = Encoding.UTF8.GetBytes(pars); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentLength = bytes.Length; //request.ContentType = "text/xml"; if (!string.IsNullOrEmpty(contentType)) request.ContentType = contentType; request.Credentials = CredentialCache.DefaultCredentials; //Stream writer = request.GetRequestStream(); //writer.Write(bytes, 0, bytes.Length); //writer.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); string text = readStream.ReadToEnd(); response.Close(); readStream.Close(); return text; } /// <summary> /// 1.1公用 from 键值对,固定参数 /// </summary> /// <param name="url"></param> /// <param name="promotionId"></param> /// <param name="resultCode"></param> /// <param name="resultDesc"></param> /// <returns></returns> public static string RestSharpPost(string url, string promotionId, int resultCode, string resultDesc) { RestClient client = new RestClient(url); RestRequest request = new RestRequest(Method.POST); request.AddParameter("promotionId", promotionId); request.AddParameter("resultCode", resultCode); request.AddParameter("resultDesc", resultDesc); IRestResponse response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { return response.Content; } else { return response.ErrorException.StackTrace; } } /// <summary> /// 1.2公用 from 键值对 /// </summary> /// <param name="url"></param> /// <param name="ht"></param> /// <returns></returns> public static string RestSharpPost(string url, Hashtable ht) { RestClient client = new RestClient(url); RestRequest request = new RestRequest(Method.POST); if (ht != null && ht.Count > 0) { foreach (DictionaryEntry de in ht) { request.AddParameter(de.Key.ToStr(), de.Value); } } IRestResponse response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { return response.Content; } else { return response.ErrorException.StackTrace; } } /// <summary> /// 1.3公用raw 推荐使用 /// </summary> /// <param name="url"></param> /// <param name="data">json 字符串</param> /// <returns></returns> public static string RestSharpPostRaw(string url, string data) { RestClient client = new RestClient(url); RestRequest request = new RestRequest(Method.POST); if (!string.IsNullOrEmpty(act)) { request.AddHeader("content-type", "application/json"); request.AddParameter("application/json", data, ParameterType.RequestBody); } IRestResponse response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { return response.Content; } else { return response.ErrorException.StackTrace; //异常信息返回 } } 调用 Raw string ret= ""; string url= "https://www.xxxx.com/index/update"; //对象参数 var data = new { shopId="你好1", grossProfit = "你好2", rebate = "你好3"}; try { //第一种方法调用Raw ret = HttpRequstExtensions.RestSharpPostRaw(url, data.ToJson()); //第二种方法调用Raw //ret = HttpRequstExtensions.HttpPost(url, data.ToJson(), "application/json"); } catch { } //json 反 json string字符串 public static string ToJson(this object obj) { var json = string.Empty; try { var jSetting = new JsonSerializerSettings { ContractResolver = new NullToEmptyStringResolver(), DateFormatString = "yyyy-MM-dd HH:mm:ss" }; json = JsonConvert.SerializeObject(obj, jSetting); } catch { return json; } return json; } /// <summary> /// json转对象忽略大小写 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json"></param> /// <returns></returns> public static T ToObject<T>(this string json) where T : new() { try { if (string.IsNullOrEmpty(json)) return new T(); return JsonConvert.DeserializeObject<T>(json); } catch (Exception ex) { return new T(); } } }}