1. 程式人生 > >後臺HttpRequest訪問https介面的方法

後臺HttpRequest訪問https介面的方法

因為專案需要,寫了一個後臺呼叫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);