🏆 个人愚见,没事写写笔记
🏆《博客内容》:Unity3D开发内容
🏆🎉欢迎 👍点赞✍评论⭐收藏
🔎Unity中的HTTP编程
☀️Unity中的HTTP通信主要依赖的是Unity自带的UnityWebRequest类
UnityWebRequest封装了网络请求,支持http、https、file、ftp协议的请求以及处理。
UnityWebRequest 由三个元素组成:
UploadHandler 处理数据将数据发送到服务器的对象
DownloadHandler 从服务器接收数据的对象
UnityWebRequest 负责 HTTP 通信流量控制来管理上面两个对象的对象
HTTP headers(头部)设置:请求头部经常用来设置请求的一些属性参数
request.SetRequestHeader("Content-Type", "application/json");//告诉服务器给我们返回json格式的数据
request.SetRequestHeader("Authorization", token);//有的而需要设置token
通常我们用的比较多的是GET和POST方法。GET一般用来获取信息,POST一般用来向服务器上传信息,比如表单、文件等。
Get请求:
方法一:
private IEnumerator UnityWebRequest_Get() { string url = "https://www.baidu.com"; UnityWebRequest request = UnityWebRequest.Get(url); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) { Debug.Log(request.downloadHandler.text); } else { Debug.LogError(request.error); } }
方法二:
private IEnumerator UnityWebRequest_Get() { string url = "https://www.baidu.com"; UnityWebRequest request = new UnityWebRequest(url); request.downloadHandler = new DownloadHandlerBuffer(); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) { Debug.Log(request.downloadHandler.text); } else { Debug.LogError(request.error); } }
Post请求:
private IEnumerator UnityWebRequest_Post() { string url = "上传的地址"; UnityWebRequest request = new UnityWebRequest(url, "POST"); byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postData); request.uploadHandler = new UploadHandlerRaw(postBytes); request.downloadHandler = new DownloadHandlerBuffer(); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) { Debug.Log(request.downloadHandler.text); } else { Debug.LogError(request.error); } }
上传from表单:
private IEnumerator UnityWebRequest_Post() { string url = "上传的地址"; WWWForm form = new WWWForm(); form.AddBinaryData("key", buffer); form.AddField("key", "value"); UnityWebRequest request = UnityWebRequest.Post(url, form); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) { Debug.Log(request.downloadHandler.text); } else { Debug.LogError(request.error); } }