後臺HttpRequest訪問https介面的方法
阿新 • • 發佈:2019-01-06
因為專案需要,寫了一個後臺呼叫https介面的方法,記錄下來,以備後用:
1. 封裝的訪問方法
using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; namespace Test { public class HttpsRequest { private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; } public static string PostHttpsRequest(string url, Dictionary<string, string> parameters) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); var request = WebRequest.Create(url) as HttpWebRequest; request.ProtocolVersion = HttpVersion.Version10; request.CookieContainer = new CookieContainer(); request.AllowAutoRedirect = true; request.Timeout = 1000 * 60; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Referer = url; if (!(parameters == null || parameters.Count == 0)) { var param = ""; foreach (var key in parameters.Keys) { param += "&" + key + "=" + parameters[key]; } using (var sw = new StreamWriter(request.GetRequestStream())) { sw.Write(param.Trim('&')); sw.Close(); } } var res = request.GetResponse() as HttpWebResponse; var st = res.GetResponseStream(); var sr = new StreamReader(st); return sr.ReadToEnd(); } } }
2. 呼叫的例子
var parameters = new Dictionary<string, string>(); parameters.Add("aa", "ttt"); parameters.Add("bb", "tt"); parameters.Add("cc", "1"); parameters.Add("dd", "2"); var res = HttpsRequest.PostHttpsRequest("https://www.xxxxx.com/xxx/xxx", parameters);