Unity - UnityWebRequest使用小记

2019-10-09  本文已影响0人  Francis_Rose

Unity逐渐放弃WWW的网络数据发送的API,转而推荐使用UnityWebRequest,参考官网教程(https://docs.unity3d.com/Manual/UnityWebRequest.html
其基础结构如下图

image.png

传送数据的使用

private IEnumerator DoUpload(string url, string data)
{
    using (var _inputStream = new MemoryStream())
    {
        var _data = System.Text.Encoding.UTF8.GetBytes(data);
        var gZip = new System.IO.Compression.GZipStream(_inputStream, System.IO.Compression.CompressionMode.Compress);

        gZip.Write(_data, 0, _data.Length);
        gZip.Close();

        var uploadData = Convert.ToBase64String(_inputStream.ToArray());
        if (null != uploadData && uploadData.Length > 0)
        {
        using (var webRequest = UnityEngine.Networking.UnityWebRequest.Put(url, uploadData))
        {
            yield return webRequest.SendWebRequest();

            if (webRequest.isNetworkError || webRequest.isHttpError)
            {
                Debug.LogError("webRequest: error => " + webRequest.error);
            }
        }
    }
    gZip.Dispose();
}

使用:

private void Awake()
{
    StartCoroutine(DoUpload("<url>", "test data"));
}

使用时自己把自己坑了一把,使用的url直接使用了不带http://前缀的地址,结果在Editor下面正常使用,打包在Android中说URL格式错误,暂时还没有深究这个差别,不过以后长个教训,还是补全比较好。

上一篇 下一篇

猜你喜欢

热点阅读