You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity WebRequest POST提交JSON出现内部服务错误该如何解决

你收到500内部服务错误的核心原因是请求体格式不匹配:Postman中测试通过的是JSON格式请求,但现有代码用WWWForm提交的是表单格式数据,服务端无法解析导致报错。

以下是完整修改后的代码,同时已新增要求的formToken: MyApp参数:

using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class SendData: MonoBehaviour {

    // 定义和请求结构匹配的可序列化类
    [System.Serializable]
    private class RequestValues
    {
        public string AppName;
        public string AppUser;
    }

    [System.Serializable]
    private class PostRequestBody
    {
        public RequestValues values;
        public bool consentAccepted;
        public string consentToken;
        public string formToken;
    }

    void Update () {
        // 如果你项目用自定义InputCompat类,这里换回InputCompat.GetKeyDown即可
        if (Input.GetKeyDown(KeyCode.P)) {
            StartCoroutine(FillAndSend());
        }
    }

    public IEnumerator FillAndSend() {
        // 构造符合要求的请求数据
        var requestData = new PostRequestBody
        {
            values = new RequestValues
            {
                AppName = "Testttt",
                AppUser = "Reinnn"
            },
            consentAccepted = true,
            consentToken = "tz677zuiuis2qEZKo3Lt+kHluOGss", // 你的token值
            formToken = "MyApp" // 新增要求的参数
        };

        // 序列化为JSON字符串
        string jsonBody = JsonUtility.ToJson(requestData);

        // 构造POST请求
        UnityWebRequest www = UnityWebRequest.PostWwwForm("https://mywebsite.com/profile/MyApp", jsonBody);
        // 必须设置请求头指定内容格式为JSON
        www.SetRequestHeader("Content-Type", "application/json");
        // 如果服务端确实需要header带token,取消下一行注释即可
        // www.SetRequestHeader("token", "tz677zuiuis2qEZKo3Lt+kHluOGss");

        yield return www.SendWebRequest();

        // 低版本Unity可以换回原来的isNetworkError/isHttpError判断
        if (www.result != UnityWebRequest.Result.Success) {
            Debug.LogError($"请求失败:{www.error},返回内容:{www.downloadHandler.text}");
        } else {
            Debug.Log($"请求成功:{www.downloadHandler.text}");
        }
        www.Dispose();
    }
}

补充说明

  • 如果你习惯使用Newtonsoft.Json做序列化,直接把JsonUtility.ToJson替换为JsonConvert.SerializeObject即可,无需给数据类加[Serializable]标签
  • 可以通过错误日志里的返回内容,快速定位后续可能出现的参数缺失问题

内容的提问来源于stack exchange,提问作者Rein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:06:04