untiy 访问https出现Unable to complete SSL connection

服务器今天把http协议换成https以后,连接导致出现Unable to complete SSL connection。相同的代码访问百度是OK的。由于我们这边服务器的SSL证书是自己生成的,没有经过网络认证导致的。后面想通过不验证SSL,结果成功了。。。详细代码在下方。

        UnityWebRequest request = UnityWebRequest.Post(url, mParam.ToString());
        request.SetRequestHeader("Content-Type", "application/json");
        request.SetRequestHeader("Accept", "application/json");
        request.certificateHandler =new BypassCertificate() ;

        yield return request.SendWebRequest();
        if (request.isNetworkError)
        {
            callBack?.Invoke(0, request.downloadHandler.text);
        }
        else
        {
            callBack?.Invoke(1, request.downloadHandler.text);
        }

主要还是标红的那句,BypassCertificate的用法如下:

public class BypassCertificate : CertificateHandler
{
    protected override bool ValidateCertificate(byte[] certificateData)
    {
        return true;
    }
}

 

搞定!!!

Unity中的HTTPS请求可以通过UnityWebRequest类来实现。UnityWebRequest是用于处理各种网络请求的类,包括HTTP和HTTPS请求。 要进行HTTPS请求,我们需要使用Unity的证书验证系统来验证服务器的证书。首先,我们需要在Unity的Player Settings中将API Compatibility Level设置为.NET 4.x。然后,我们需要创建一个自定义证书验证类来实现验证逻辑。以下是一个示例的证书验证类: ``` using UnityEngine.Networking; using System.Security.Cryptography.X509Certificates; using System.Net.Security; public class CertificateHandler : CertificateHandler { protected override bool ValidateCertificate(byte[] certificateData) { X509Certificate2 certificate = new X509Certificate2(certificateData); // 在这里实现自定义的证书验证逻辑 // 返回true表示验证通过,返回false表示验证失败 return true; } } ``` 接下来,我们可以使用UnityWebRequest来发送HTTPS请求。以下是一个发送HTTPS GET请求的示例: ``` IEnumerator SendHttpsGetRequest(string url) { UnityWebRequest request = UnityWebRequest.Get(url); request.certificateHandler = new CertificateHandler(); yield return request.SendWebRequest(); if (request.isNetworkError || request.isHttpError) { Debug.Log(request.error); } else { Debug.Log(request.downloadHandler.text); } } ``` 在上面的示例中,我们将自定义的证书验证类设置为UnityWebRequest的certificateHandler,并使用SendWebRequest方法发送请求。发送完请求后,我们可以通过isNetworkError和isHttpError属性来判断请求是否出错,然后通过downloadHandler获取响应内容。 总结起来,要在Unity中进行HTTPS请求,我们需要将API Compatibility Level设置为.NET 4.x,并创建自定义的证书验证类来验证服务器的证书。然后,使用UnityWebRequest来发送HTTPS请求,并处理返回的响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值