之前調試好的環境,現在演示出問題了,HTTP訪問原代碼如下:
1 var request = (HttpWebRequest)WebRequest.Create($"{ConfigurationManager.AppSettings["SRMeetUrl"]}{url}?"); 2 request.Method = "POST"; 3 request.ContentLength = 0; 4 request.ContentType = "application/x-www-form-urlencoded"; 5 var bytes = Encoding.UTF8.GetBytes(para); 6 request.ContentLength = bytes.Length; 7 using (var writeStream = request.GetRequestStream()) 8 { 9 writeStream.Write(bytes, 0, bytes.Length); 10 } 11 12 using (var response = (HttpWebResponse)request.GetResponse()) 13 { 14 var responseValue = string.Empty; 15 16 if (response.StatusCode != HttpStatusCode.OK) 17 { 18 var message = string.Format("請求數據失敗. 返回的 HTTP 狀態碼:{0}", response.StatusCode); 19 throw new ApplicationException(message); 20 } 21 22 using (var responseStream = response.GetResponseStream()) 23 { 24 if (responseStream != null) 25 { 26 using (var reader = new StreamReader(responseStream)) 27 { 28 responseValue = reader.ReadToEnd(); 29 } 30 } 31 } 32 return JsonConvert.DeserializeObject<HttpResultBase<T>>(responseValue);
對比發現,配置的服務地址從HTTP變成了HTTPS,需要添加SSL訪問處理:
添加如下代碼:
1 ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, errors) => true); 2 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
HTTPS訪問代碼如下:
1 ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, errors) => true); 2 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11; 3 var request = (HttpWebRequest)WebRequest.Create($"{ConfigurationManager.AppSettings["Url"]}{url}?"); 4 request.Method = "POST"; 5 request.ContentLength = 0; 6 request.ContentType = "application/x-www-form-urlencoded"; 7 var bytes = Encoding.UTF8.GetBytes(para); 8 request.ContentLength = bytes.Length; 9 using (var writeStream = request.GetRequestStream()) 10 { 11 writeStream.Write(bytes, 0, bytes.Length); 12 } 13 14 using (var response = (HttpWebResponse)request.GetResponse()) 15 { 16 var responseValue = string.Empty; 17 18 if (response.StatusCode != HttpStatusCode.OK) 19 { 20 var message = string.Format("請求數據失敗. 返回的 HTTP 狀態碼:{0}", response.StatusCode); 21 throw new ApplicationException(message); 22 } 23 24 using (var responseStream = response.GetResponseStream()) 25 { 26 if (responseStream != null) 27 { 28 using (var reader = new StreamReader(responseStream)) 29 { 30 responseValue = reader.ReadToEnd(); 31 } 32 } 33 } 34 return JsonConvert.DeserializeObject<HttpResultBase<T>>(responseValue); ; 35 }