zoukankan      html  css  js  c++  java
  • WIn7 下使用 NetHttpClient 请求HTPPS 网站

    在WIN7 下使用 HttpClient 会报以下两种错 ;
    1 Server Certificate Invalid or not present
    2 Error sending data: (12175) 发生了安全错误.

    3 System.Net.WebException: 请求被中止: 未能创建 SSL/TLS 安全通道。

    经查询资料是因为WIn7 默认不支持这个协议
    详细见:
    https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi

    解决方法:

    指定 HttpClient.SecureProtocols  为TLS12

    代码:

    procedure TForm2.Button1Click(Sender: TObject);
    var
      str:string;
      ss:TStringStream;//TStreamstring
     begin
       try
        ss:=TStringStream.Create();
        //WIN 7 下使用 需要 指定 默认的协议TLS12
       http.SecureProtocols:=[THTTPSecureProtocol.TLS12];
        http.Get(url,ss);
        memo1.Text:=ss.DataString;
       finally
          ss.Free;
       end;
    end;
    View Code
       private void button1_Click(object sender, EventArgs e)
            {
                //ServicePointManager.ServerCertificateValidationCallback =
                //    new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
                string data;
                HttpClient http = new HttpClient();
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                HttpResponseMessage response = http.GetAsync("https://kindao1.github.io/LimitTW/").Result;
                textBox1.AppendText(response.ToString()+"
    ");
                var re = response.Content.ReadAsStringAsync();
                data =re.Result;
                textBox1.AppendText(data);
            }
    C# 代码
  • 相关阅读:
    前端教程-3.调试工具(上)
    常用跨域方法实践(二)
    常用跨域方法实践(一)
    移动web问题小结
    Promise实现原理
    H5页面的跨webview预拉取数据尝试
    【译】编写高性能JavaScript
    校招社招必备核心前端面试问题与详细解答
    高性能极致用户体验前端开发实战
    http请求代理proxy-ajax
  • 原文地址:https://www.cnblogs.com/stroll/p/12987796.html
Copyright © 2011-2022 走看看