.NET Framework 4 请求https接口

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using Newtonsoft.Json;

namespace Test.A
{
    public static class HttpHelper
    {
        public static T PostHttps<T>(string url, Dictionary<string, string> parameters, object[] args) where T : new()
        {
            // 这里设置了协议类型。把SSL验证的设置写到HttpRequect创建之前 
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Timeout = 30000;

            //处理参数列表
            var sb = new StringBuilder();
            foreach (var item in parameters)
            {
                //sb.AppendFormat("{0}={1}&", item.Key, item.Value);
                sb.AppendFormat("{0}={1}&", HttpUtility.UrlEncode(item.Key), HttpUtility.UrlEncode(item.Value));
            }
            var paramStr = sb.ToString().TrimEnd('&');
            byte[] data = Encoding.UTF8.GetBytes(paramStr);
            request.ContentLength = data.Length;
            Stream writer = request.GetRequestStream();
            writer.Write(data, 0, data.Length);
            writer.Close();

            StreamReader sr = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8);
            var resultStr = sr.ReadToEnd();
            return JsonConvert.DeserializeObject<T>(resultStr);
        }
    }
}

 

posted @ 2024-01-23 14:12  朝闲  阅读(110)  评论(0编辑  收藏  举报