问题描述
我正在使用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!");
}