zoukankan      html  css  js  c++  java
  • 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;
            }
    

      

  • 相关阅读:
    [转] RISC-V架构介绍
    SiP封装成超越摩尔定律的要塞,日月光/安靠/长电科技谁将赢取IC封装的未来
    OLED中的Demura
    第四次工业革命:人工智能(AI)入门
    星座图的原理与应用
    示波器基本原理之七:示波器的基本测量
    示波器基本原理之六:示波器的基本控制
    示波器基本原理之五:采集模式
    示波器基本原理之四:波形捕获率
    png的故事:隔行扫描算法
  • 原文地址:https://www.cnblogs.com/lhlong/p/9850201.html
Copyright © 2011-2022 走看看