在Unity网络请求用默认的Post方法会请求失败,Content-Type也设置成application/json格式,请求的时候还是会用到默认的,一直报错:JSON parse error: Unexpected character ('%' (code 37)): expected a valid value (number, String, array, object, 'true', 'false' or 'null'),之前一直不知道原因,后来看到一篇文章,意思是说,UnityWebRequest默认的uploadHandler会默认将json数据转成默认的编码格式。导致服务器读取不到json数据。
所以只要在请求的时候new一个新的uploadHandler,就能正常用post请求数据。下面是代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public IEnumerator IE_Post(string url, string postData, Action<string> actionResult) { using (uwr = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST)) { uwr.SetRequestHeader("Content-Type", "application/json"); byte[] bodyRaw = Encoding.UTF8.GetBytes(postData); uwr.uploadHandler = new UploadHandlerRaw(bodyRaw); uwr.downloadHandler = new DownloadHandlerBuffer(); yield return uwr.SendWebRequest(); if (uwr.result == UnityWebRequest.Result.Success) { actionResult?.Invoke(uwr.downloadHandler.text); } else { Debug.LogError($"[Error:Post String] {uwr.error}"); } } } |
这个问题最近才了解,大概原因是UnityWebRequest初始化的时候比较耗性能,就用了默认的一些参数做了初始化。所以后面用到的时候需要手动去做处理,并且建议提前去new出多个UnityWebRequest,供后面去使用。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1783 文章源自大腿Plus-https://www.zhaoshijun.com/archives/1783
我的微信
微信扫一扫
shijun_z
我的QQ
QQ扫一扫
846207670
评论