IE或c#写的客户端,调用WebService是,默认使用TLS 1.1协议。如果服务器关闭了TLS1.1,使用TLS1.2时,客户端必须增加1.2的语法,否则会出现错误:
System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接
System.Net.WebException: 基础连接已经关闭: 发送时发生错误。
解决方法:
客户端语言
|
版本
|
类库
|
是否支持
|
兼容方案
|
---|---|---|---|---|
Java | 1.6.115之前 | 否 | 第三方支持包 | |
1.6.115之后 | 是 | 启动jvm 添加参数-Dhttps.protocols=TLSv1.1,TLSv1.2 | ||
1.7 | 是 | 启动jvm 添加参数-Dhttps.protocols=TLSv1.1,TLSv1.2 | ||
1.8 | 是 | 默认支持 | ||
Nodejs | 各个版本 | 是 | 默认支持 | |
c#,asp.net | 4.0-4.4 | 是 |
在发送HTTP请求前加入下行代码 using System.Net; ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; |
|
4.5 | 是 |
如果是4.5以上版本可以直接使用 using System.Net; |
||
Python | 2.7-3 | 是 | 默认支持 | |
curl | 7.19.7 | 是 | 默认支持 | |
Golang | 1.7.4 | net/http | 是 | 默认支持 |
Ruby | ||||
php | php5.6 | file_get_contents | 是 | |
http\client | 否 | |||
curl | 是 | |||
php5.3.29 | file_get_contents | 是 | ||
http\client | 否 | |||
curl | 是 |
源自https://blog.csdn.net/yanghaitian/article/details/77498872