Unity逐渐放弃WWW的网络数据发送的API,转而推荐使用UnityWebRequest,参考官网教程(https://docs.unity3d.com/Manual/UnityWebRequest.html)
其基础结构如下图
传送数据的使用
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格式错误,暂时还没有深究这个差别,不过以后长个教训,还是补全比较好。
网友评论