在Unity中使用HTTP Put json

问题描述

我正在使用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

解决方法

我知道了。如果将来有人遇到这个问题,那么解决方案比您想象的要简单。问题是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!");
            }