Web请求

        /// <summary>
        /// 返回JSon数据
        /// </summary>
        /// <param name="json">要处理的JSON数据</param>
        /// <param name="url">要提交的URL</param>
        /// <param name="authorCode">认证字符串</param>
        /// <returns>返回的JSON处理字符串</returns>
        public static string GetResponseData(string json, string url, string authorCode, string API_Token1)
        {
            HttpWebRequest request = null;

            try
            {
                ServicePointManager.Expect100Continue = false;
                byte[] bytes = Encoding.UTF8.GetBytes(json);

                //初始化新的webRequst
                //1. 创建httpWebRequest对象
                //request = (HttpWebRequest)WebRequest.Create(url);
                if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                {
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                    request = WebRequest.Create(url) as HttpWebRequest;
                    request.ProtocolVersion = HttpVersion.Version11;
                }
                else
                {
                    request = WebRequest.Create(url) as HttpWebRequest;
                }
                //POST /k/v1/records.json HTTP/1.1

                //2.初始化HttpWebRequest对象
                request.Method = "POST";//Post或者get
                request.ContentType = "application/json; charset=UTF-8";
                request.ContentLength = bytes.Length;
                request.KeepAlive = false;
                request.AllowAutoRedirect = false;
                request.Timeout = 30000;
                request.ReadWriteTimeout = 30000;
                request.Proxy = null;

                //安全认证
                request.Headers.Add("Authorization", "Basic " + authorCode);
                request.Headers.Add("X-Cybozu-API-Token", API_Token1);
                //request.ProtocolVersion = HttpVersion.Version11;
                //ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;//SecurityProtocolType.Tls1.2;
                //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                //request.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });


              
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
              
                //3.附加要POST给服务器的数据到HttpWebRequest对象(附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。)
                //request.CookieContainer = cookieContainer;
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(bytes, 0, bytes.Length);
                }

                //4. 读取服务器的返回信息
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                return reader.ReadToEnd();

                  
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                request.ServicePoint.ConnectionLimit = 50;
                request.AllowAutoRedirect = false;
                ///必须释放掉,不然同一个接口只能调用一次
                request.Abort();

            }
        }

注意https和http的区别

if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                {
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                    request = WebRequest.Create(url) as HttpWebRequest;
                    request.ProtocolVersion = HttpVersion.Version11;
                }
                else
                {
                    request = WebRequest.Create(url) as HttpWebRequest;
                }

  

  

        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        }

  

原文地址:https://www.cnblogs.com/lhlong/p/9850201.html