【发布时间】: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