【问题标题】:Using HTTP Put json in Unity在 Unity 中使用 HTTP Put json
【发布时间】:2021-01-14 04:05:03
【问题描述】:

我正在使用UnityWebRequest 在服务器上更新(PUT)原始 JSON。不幸的是,我收到错误HTTP/1.1 405 Method Not Allowed。我假设我没有正确编码它。这里可能是什么问题? 这是我同事提出的后续问题:HTTP Method Not Allowed in REST API Post

我们已尝试以脚本中以下给出的不同方式对其进行编码。不幸的是,它不起作用。 我们有这个在线 JSON 并且要输入数据 (PUT),必须将名称和地址字段设置为非空。

IEnumerator Post()
    {
        byte[] myData = System.Text.Encoding.UTF8.GetBytes("{'name': 'User01', 'address':{'raw':'MountFiji'}}");
        UnityWebRequest www = UnityWebRequest.Put("website_of_the_user", myData);
        www.SetRequestHeader("Content-Type", "application/json");
        yield return www.SendWebRequest();
 
        if(www.isNetworkError || www.isHttpError) {
            Debug.Log(www.error);
        }
        else {
            Debug.Log("Upload complete!");
        }
    }
{
    "name": "",
    "address": {
        "raw": ""
    }
}

我们拥有 API 的网页具有以下属性:

HTTP 200 OK
Allow: GET, HEAD, PUT, OPTIONS, DELETE
Content-Type: application/json

【问题讨论】:

  • 连接是否与 Postman 一起使用?大多数情况下,像 Postman 这样的问题有效,而 c# 无效。 c# 默认标头与 Postman 不同。所以最好的解决方法是使用像wireshark或fiddler这样的嗅探器并比较C#和Postman中的标题。然后让 c# headers 看起来像 Postman。还要检查正在使用的 TLS 版本,并确保使用相同版本的操作系统。
  • @jdweng 不,我们已经尝试过了。它也不适用于 POST。
  • 您是否有权访问后端代码(服务器代码)?我猜您的代码没有问题,但服务器无法处理您的请求。
  • @JochemVanHespen 很遗憾,没有,我们没有。你确定这可能是后端代码问题吗?我们的编码方式没有问题吗?
  • 您有任何可用的示例代码吗?每个服务器都是不同的,您要么需要一个工作应用程序、提供正确格式消息的良好文档,要么需要服务器代码源以便您可以调试。

标签: c# unity3d django-rest-framework http-get


【解决方案1】:

我让它工作了。如果将来有人遇到这个问题,那么解决方案比您想象的要简单。问题是 JSON 格式代码,重要的是要给出\,因为数据是一个字符串。完整代码如下:

            UnityWebRequest www = UnityWebRequest.Put(URL_01, "{\"name\":\"user_01\",\"address\":{\"raw\":\"MountFiji\"}}");
            www.SetRequestHeader ("Content-Type", "application/json");

            yield return www.SendWebRequest();

            if (www.isNetworkError || www.isHttpError)
            {
                Debug.Log(www.error);
            }
            else
            {
                Debug.Log("Form upload complete!");
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2019-03-01
    • 2011-04-29
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多