[Unity]UnityWebRequestを使用してHttpをHttpsにアップグレードします/[エラー]Curlエラー51:証明書の検証に失敗しました

例としてPUTを取り上げます

Http:

    private void PutTest(string url,string parame)
    {
        UnityWebRequest webRequest = new UnityWebRequest(url,UnityWebRequest.kHttpVerbPUT);

        byte[] databyte = Encoding.UTF8.GetBytes(parame);
        webRequest.uploadHandler = new UploadHandlerRaw(databyte);

        webRequest.downloadHandler = new DownloadHandlerBuffer();

        webRequest.timeout = 5;

        webRequest.SetRequestHeader("Content-Type","text/json;charset=utf-8");

        webRequest.SendWebRequest();
    }

URLを「http」から「https」に直接変更した場合、

「Curlエラー51:証明書の検証に失敗しました:UNITYTLS_X509VERIFY_FLAG_NOT_TRUSTED」というエラーが発生します。証明書が指定されていないため、証明書の検証に失敗します。使用するプラットフォームはデフォルトの証明書の検証を使用するため、失敗します。

証明書は、WebRequest.certificateHandlerを設定することで指定できます。CertificateHandlerクラスのValidateCertificate関数の戻り値はfalseです。カスタムサブクラスはCertificateHandlerを継承し、ValidateCertificate関数を書き換えて、証明書を正常に検証します

public class WebRequestCertificate : CertificateHandler
{
    protected override bool ValidateCertificate(byte[] certificateData)
    {
        //return base.ValidateCertificate(certificateData);
        return true;
    }
}

Https:

    private void PutTest(string url,string parame)
    {
        UnityWebRequest webRequest = new UnityWebRequest(url,UnityWebRequest.kHttpVerbPUT);

        byte[] databyte = Encoding.UTF8.GetBytes(parame);
        webRequest.uploadHandler = new UploadHandlerRaw(databyte);
        webRequest.downloadHandler = new DownloadHandlerBuffer();
        webRequest.timeout = 5;

        //拥有对CertificateHandler对象的引用,该对象可管理此UnityWebRequest的证书验证
        webRequest.certificateHandler = new WebRequestCertificate();

        webRequest.SetRequestHeader("Content-Type","text/json;charset=utf-8");
        webRequest.SendWebRequest();
    }

おすすめ

転載: blog.csdn.net/qq_39108767/article/details/123214137