c# - 在 Unity 中使用 HTTP Put json
问题描述
我正在使用UnityWebRequest
在服务器上更新(PUT)原始 JSON。不幸的是我得到了错误HTTP/1.1 405 Method Not Allowed
。我假设我没有正确编码它。这里可能是什么问题?这是我的同事提出的后续问题:REST API Post 中不允许 HTTP 方法
我们尝试以不同的方式对其进行编码,如下面的脚本所示。不幸的是,它不起作用。我们有这个在线 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!");
}
推荐阅读
- swift - 使用 Swift 在核心数据中保存 NSDictionary
- c# - 使用 dotnet core 在 linux 上处理 fifo 数据
- contextmenu - SwiftUI contextMenu - 如何添加红色(危险)动作
- php - 如何计算Mysql中特定行中具有相同值的列?
- html - FullCalendar 上下文菜单
- c# - 仅修复 SOAP 客户端 - 内容类型不匹配
- r - 使用来自其他列的某些行的值创建新列
- c - STM32G0 定时器中断 PWM 无法正常工作的问题
- ios-ui-automation - 是否可以为@iOSXCUITFindBy 设置分区accessibilityId
- java - 如何将 java.sql.binary 类型映射到休眠类型?