using Newtonsoft.Json.Linq; using NXWMS.Client.Code.Models; using NXWMS.Client.Code.Serialize; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; namespace NXWMS.Client.Code.Net { /// /// Http请求帮助类 /// public class HttpRequestHelper { /// /// 票据 /// public string _Ticket { get; set; } private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { return true; } /// /// Get请求返回响应 /// /// /// /// public string GET(string url, string parms) { ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate; ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | (SecurityProtocolType)0x300 | (SecurityProtocolType)0xC00; url = url + parms; HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "GET"; HttpWebResponse res; try { res = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); string content = sr.ReadToEnd(); return content; } /// /// Post请求返回响应 /// /// /// /// /// public string POST(string url, string pramstr = null, Dictionary param = null) { HttpWebRequest request = null; if (url.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(RemoteCertificateValidate); request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { request = (HttpWebRequest)WebRequest.Create(url); } //ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate; //ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 // | SecurityProtocolType.Ssl3 // | SecurityProtocolType.Tls // | (SecurityProtocolType)0x300 // | (SecurityProtocolType)0xC00; ; //var request = WebRequest.Create(url) as HttpWebRequest; //CookieContainer cookieContainer = new CookieContainer(); //request.CookieContainer = cookieContainer; //request.AllowAutoRedirect = true; //request.MaximumResponseHeadersLength = 1024; request.Method = "POST"; //请求方式为post //request.AllowAutoRedirect = true; //request.MaximumResponseHeadersLength = 1024; request.ContentType = "application/json; charset=utf-8"; if (!string.IsNullOrWhiteSpace(_Ticket)) { request.Headers.Add("Authorization", "Bearer " + _Ticket); } JObject json = new JObject(); string jsonstring; if (param != null) { if (param.Count != 0) { foreach (var item in param) { json.Add(item.Key, item.Value); } } jsonstring = json.ToString(); } else if (!string.IsNullOrWhiteSpace(pramstr)) { jsonstring = pramstr; } else { jsonstring = ""; } var jsonbyte = Encoding.UTF8.GetBytes(jsonstring); using (var postStream = request.GetRequestStream()) { postStream.Write(jsonbyte, 0, jsonbyte.Length); } // postStream.Close(); HttpWebResponse res; StreamReader sr; string content; try { res = (HttpWebResponse)request.GetResponse(); sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); content = sr.ReadToEnd(); } catch (WebException ex) { var failResult = new OperateInResultInfo { AffectedRows = 0, Status = OperateInStatus.CodeError, Message = ex.Message }; //res = (HttpWebResponse)ex.Response; //sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); content = JsonHandleHelper.SerializeObject(failResult); } return content; } /// /// Post数据流 /// /// /// /// /// public string POSTStream(string url, byte[] arrAy, string parms) { HttpWebResponse res; try { ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | (SecurityProtocolType)0x300 | (SecurityProtocolType)0xC00; ; ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate; Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); byte[] arrB = arrAy; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = arrB.Length; Stream outStream = request.GetRequestStream(); outStream.Write(arrB, 0, arrB.Length); outStream.Close(); res = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8); string content = sr.ReadToEnd(); return content; } } }