首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnityWebRequest帖子不发送正文

UnityWebRequest帖子不发送正文
EN

Stack Overflow用户
提问于 2021-06-28 00:10:13
回答 2查看 3.6K关注 0票数 3

如标题所示,代码如下所示。我尝试过设置chunkedTransfer=false、Content应用程序/ JSON、WWWForm、手动构建JSON对象和HttpClient。对于Content应用程序/json,API甚至没有命中。对于其他人来说,身体是一个空的物体。我不知道在StackOverflow、YouTube、Unity和所有其他资源中存在什么问题。

从今天早上开始,我将使用Newtonsoft.Json来序列化JSON主体。我认为现在最大的问题是,当我设置webRequest.SetRequestHeader("Content-Type", "application/json");时,API路由甚至没有接收到请求。

代码语言:javascript
复制
async Task<string> makeRequest()
        {
            string url = API_BASE + "/users"; 
            
            Dictionary<string, string> body = new Dictionary<string, string>();
            body.Add("username", username);
            body.Add("password", password);
            body.Add("email", email);

            using (UnityWebRequest webRequest = UnityWebRequest.Post(url, JsonConvert.SerializeObject(body)))
            {
                await webRequest.SendWebRequest();

                string result = Encoding.UTF8.GetString(webRequest.downloadHandler.data);

                if (webRequest.result != UnityWebRequest.Result.Success)
                {
                    JSONNode error = JSON.Parse(result);

                    registerAndLoginError.GetComponent<Text>().text = error["error"]["message"];
                    registerAndLoginError.SetActive(true);

                    return "";
                }
            }

            BasicLogin();
            return "";
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-28 14:14:08

因此,我在其他地方看到了这个解决方案,但我继续忽略它,因为它是乏味的,似乎是一些应该解决的问题。不过,我现在一点也不关心。

  1. 使用UnityWebRequest.Put而不是UnityWebRequest.Post
  2. 设置webRequest.method = "POST";
  3. 设置webRequest.SetRequestHeader("Content-Type", "application/json");

这是可行的,但感觉很糟糕,没有任何意义。

票数 7
EN

Stack Overflow用户

发布于 2021-06-28 07:16:43

内置Dictionary**!** JsonUtility 不支持--它遵循与检查器相同的序列化规则,参见脚本序列化

=> JsonUtility.ToJson(body)只返回"",或者在最好的情况下返回"{}"

尝试创建“手动”的JSON字符串,比如。

代码语言:javascript
复制
var json = "{\"username\":\""+username+"\", \"password\":\""+password+"\", \"email\":\""+email+"\"}";

或者使用不同的库,例如Newtonsoft .NET Json (可作为通过PackageManager包装提供),它支持直接(反)序列化集合和字典。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68156230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档