UnityWebRequest POST 不发送正文

Ror*_* L. 4 c# unity-game-engine unitywebrequest

正如标题所说,代码如下。我尝试设置 chunkedTransfer=false、Content-Type application/json、WWWForm、手动构建 JSON 对象和 HttpClient。对于 Content-Type application/json,API 甚至没有被命中。对于其余的,身体是一个空物体。通过 StackOverflow、YouTube、Unity 文档和所有其他资源,我不知道问题出在哪里。

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

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 "";
        }
Run Code Online (Sandbox Code Playgroud)

Ror*_* L. 14

所以我在其他地方看到过这个解决方案,但我继续忽略它,因为它很糟糕,而且似乎应该解决。不过,我现在已经不在乎了。

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

这确实有效,但感觉非常糟糕并且没有任何意义。