C#如何将调用WebService接口的HTTP请求改为HTTPS请求

前言

要将HTTP请求改为HTTPS请求,这可不是简单的将HTTP改为HTTPS就可以了,你尝试下,就知道这是不行的。
而本文将介绍C#如何将调用WebService接口的HTTP请求改为HTTPS请求。
若是是其他语言,请关闭此页。

步骤

1. 更新服务

  1. 配置服务引用
    右键服务 - 配置服务引用 - 将地址的http改为https
  2. 更新服务引用
    右键服务 - 更新服务引用

2. 更新app.config

  1. 将http改为https
  2. 为binding元素添加security元素
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="xxx">
                    <security mode="Transport">
                        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
                        <message clientCredentialType="Certificate" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://xxx" binding="basicHttpBinding" />
        </client>
    </system.serviceModel>
</configuration>

3. 查看TLS版本

可以使用浏览器查看接口使用了哪个TLS版本:

  • 使用360浏览器
    把接口地址拷贝到360浏览器打开,直接点击当前页面网址前面的绿色安全锁即可看到TLS版本:
    在这里插入图片描述

  • 使用Chrome浏览器
    1.把接口地址拷贝到Chrome浏览器打开
    2.右键单击当前页面,然后选择“检查”;
    3.然后单击“Security”选项以查看此页面上使用的TLS版本。
    在这里插入图片描述

    4.如果我们看不到当前页面的TLS版本,我们可以 单击左侧的“Main origin”,然后在右侧,你可以看到“Connection”属性下的“Protocol”显示了TLS版本。
    在这里插入图片描述

4. 设置SecurityProtocol

为了支持TLS,因此还需要要设置安全协议的版本。
由于.NET 4.0最多支持TLS 1.0,而.NET 4.5最多支持TLS 1.2。
因此根据应用程序使用.NET版本分两种情况来设置。(代码请添加在程序入口或调用接口前)

  • .NET 4.0及以下版本请使用以下代码设置:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;

为什么是192、768、3072,因为在.NET4.5就是这样的TLS版本对应关系:

namespace System.Net
{
    [System.Flags]
    public enum SecurityProtocolType
    {
       Ssl3 = 48,
       Tls = 192,
       Tls11 = 768,
       Tls12 = 3072,
    }
}
  • .NET 4.5及以上版本请使用以下代码设置:
ServicePointManager.SecurityProtocol = 
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

.NET 4.0使用以上代码会报错,因为找不到Tlsl11Tls12

当然你也可以根据TLS的版本来设置SecurityProtocol。

5. TLS版本大于1.0电脑需安装.NET 4.5

上一步已经说了:由于.NET 4.0最多支持TLS 1.0,而.NET 4.5最多支持TLS 1.2。
因此TLS版本大于1.0程序所在的电脑需安装.NET 4.5。

安装后提示需要重启电脑,实际上不用重启HTTPS请求就能够成功调用。
在这里插入图片描述

参考

支持🤟


  • 🎸 [关注❤️我吧],我会持续更新的。
  • 🎸 [点个👍赞吧],码字不易麻烦了。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值