Unity3D:UnityWebRequest网络请求Post方法请求失败问题

在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数据。文章源自大腿Plus-https://www.shijunzh.com/archives/1783

所以只要在请求的时候new一个新的uploadHandler,就能正常用post请求数据。下面是代码。文章源自大腿Plus-https://www.shijunzh.com/archives/1783

public IEnumerator IE_Post(string url, string postData, Action<string> actionResult)
    {
        using (uwr = UnityWebRequest.Post(url, postData))
        {
            uwr.SetRequestHeader("Content-Type", "application/json");
            byte[] bodyRaw = Encoding.UTF8.GetBytes(postData);
            uwr.uploadHandler = new UploadHandlerRaw(bodyRaw);
            yield return uwr.SendWebRequest();
            if (uwr.result == UnityWebRequest.Result.Success)
            {
                actionResult?.Invoke(uwr.downloadHandler.text);
            }
            else
            {
                Debug.LogError($"[Error:Post String] {uwr.error}");
            }
        }
    }

这也算是UnityWebRequest的一个坑了,不知道为什么会这样处理。文章源自大腿Plus-https://www.shijunzh.com/archives/1783

大腿Plus
  • 本文由 发表于 2022年6月18日12:50:27
  • 转载请务必保留本文链接:https://www.shijunzh.com/archives/1783

发表评论