C# ASP.NET Core使用HttpClient的同步和异步请求
引用 Newtonsoft.Json
// Post请求 public string PostResponse(string url,string postData,out string statusCode) { string result = string.Empty; //设置Http的正文 HttpContent httpContent = new StringContent(postData); //设置Http的内容标头 httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); //设置Http的内容标头的字符 httpContent.Headers.ContentType.CharSet = "utf-8"; using(HttpClient httpClient=new HttpClient()) { //异步Post HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result; //输出Http响应状态码 statusCode = response.StatusCode.ToString(); //确保Http响应成功 if (response.IsSuccessStatusCode) { //异步读取json result = response.Content.ReadAsStringAsync().Result; } } return result; } // 泛型:Post请求 public T PostResponse<T>(string url,string postData) where T:class,new() { T result = default(T); HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); httpContent.Headers.ContentType.CharSet = "utf-8"; using(HttpClient httpClient=new HttpClient()) { HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { Task<string> t = response.Content.ReadAsStringAsync(); string s = t.Result; //Newtonsoft.Json string json = JsonConvert.DeserializeObject(s).ToString(); result = JsonConvert.DeserializeObject<T>(json); } } return result; }
post参数为键值对:var content = new FormUrlEncodedContent(postData);
使用HttpClient 请求的时候碰到个问题不知道是什么异常,,用HttpWebResponse请求才获取到异常,设置ServicePointManager可以用,参考下面这个
/// <summary> /// http请求接口 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <param></param> /// <returns></returns> public T httpClientPost<T>(string url, string postData) where T : class, new() { T result = default(T); ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); httpContent.Headers.ContentType.CharSet = "utf-8"; using (HttpClient httpClient = new HttpClient()) { HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { Task<string> t = response.Content.ReadAsStringAsync(); string s = t.Result; //Newtonsoft.Json string json = JsonConvert.DeserializeObject(s).ToString(); result = JsonConvert.DeserializeObject<T>(json); } } return result; } public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { // 总是接受 return true; } /// <summary> /// http请求接口 /// </summary> /// <typeparam></typeparam> /// <param></param> /// <param></param> /// <returns></returns> public VMDataResponse<T> HttpPost<T>(string url, string bodyString) { var result = new VMDataResponse<T>(); try { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); var request = WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json; charset=utf-8"; byte[] buffer = Encoding.UTF8.GetBytes(bodyString); request.ContentLength = buffer.Length; System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; request.GetRequestStream().Write(buffer, 0, buffer.Length); var response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) { result.msg = "错误:Respose返回不是StatusCode!=OK"; result.status = 500; logger.Error(result.msg); return result; } using (var ss = response.GetResponseStream()) { byte[] rbs = new byte[4096]; int count = 0; string str = ""; while (ss != null && (count = ss.Read(rbs, 0, rbs.Length)) > 0) { str += Encoding.UTF8.GetString(rbs, 0, count); } var msg = str; //logger.Error("返回信息" + msg); if (!string.IsNullOrWhiteSpace(msg)) { result.data = JsonConvert.DeserializeObject<T>(msg); return result; } } } catch (Exception ex) { result.msg = "错误:请求出现异常消息:" + ex.Message; result.status = 600; logger.Error(result.msg); return result; } return result; }
postget:
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/47839.html