Unity IOS应用程序无法使用UnityWebRequest调用自签名证书HTTPS

问题描述

我使用window和android都可以调用自签名证书HTTPS,但是ios不能(无法完成SSL连接)。任何设置或编码都可以解决吗?

公共IEnumerator SetGroupID(int id){ 字符串url = AppConfig.APIDomain +“ / Game / setGroupID /” + id;

    Debug.Log("Check color URL : " + url);
    using (UnityWebRequest webRequest = UnityWebRequest.Get(url)) {
        // Request and wait for the desired page.
        webRequest.certificateHandler = new WebRequestCert();
        
        yield return webRequest.SendWebRequest();
        string[] pages = url.Split('/');
        int page = pages.Length - 1;

        if (webRequest.isNetworkError) {
            Debug.Log(pages[page] + ": Error: " + webRequest.error);
            GameMainMenuUI.Instance.OhError(webRequest.error);
        }
        else {
            try {
                Debug.Log(webRequest.downloadHandler.text);
            }
            catch (Exception e) {
                GameMainMenuUI.Instance.OhError("Get Init Data Failed : "+e);
            }
        }
    }

}

公共类WebRequestCert:UnityEngine.Networking.CertificateHandler {

protected override bool ValidateCertificate(byte[] certificateData) {
    //return base.ValidateCertificate(certificateData);
    return true;

    //return false;
}

}

解决方法

有人问过类似的问题here。看来您必须在Info.plist文件中指定要允许iOS应用“不安全”的http连接。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>just-an-example.com</key>
        <string></string>
    </dict>
</dict>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...