在Linux上执行GET请求时,为什么UnityWebRequest返回未知错误?

时间:2018-12-03 16:00:31

标签: linux firebase unity3d web firebase-realtime-database

这是我的代码:

public class DatabaseHandler : MonoBehaviour
{

    string url = "https://fakeid.firebaseio.com/";
    void Start()
    {
        StartCoroutine(GetLevelsCoroutine());
    }

    IEnumerator GetLevelsCoroutine()
    {    
        using (UnityWebRequest www = UnityWebRequest.Get(url))
        {
            www.SetRequestHeader("X-Firebase-Decoding", "1");
            yield return www.SendWebRequest();
            if (www.isDone)
            {
                Debug.Log(www.error);
                string result = www.downloadHandler.text;
                Debug.Log(result);
            }
        }
    }


}

结果变量为null,而www.error为“未知错误” 为了解决这个问题,我一直在尝试不同的方法,但是,我只是不知道是什么原因导致了此错误,因为这只是一个一般性错误。

我还读到这可能是一个unitywebrequest错误,如果是这样,还有其他选择吗?

2 个答案:

答案 0 :(得分:2)

最后找到了解决问题的办法。 (仅在某些Linux操作系统上发生)

Unity仅正式支持Ubuntu Linux,因此它正在查找(但找不到)证书存储所在的位置。您可以通过创建符号链接来解决Fedora:

mkdir -p /etc/ssl/certs && ln -s /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt

这是我从以下来源获得的资源:https://forum.unity.com/threads/ubuntu-headless-build-tls-handshake-fails.546704/

答案 1 :(得分:0)

似乎您正在尝试通过REST API从Firebase实时数据库获取JSON。对REST API的请求必须以i=0 k_start[i] [8515] i=1 k_start[i] 139253 结尾,否则Firebase会将其解释为在该位置打开控制台的请求。所以.json