如何使用UnityWebRequest发送PUT请求?
正在发送PUT; Uploaded!!
正在打印到控制台。但是,没有任何更新。我认为我错误地格式化myData
。
我尝试发送PUT的实际网址格式为... http://servername.com/api/dogs/1/token=fndskajfdafdsf&cleanliness_level=20
抱歉,我无法记住所谓的格式。
这是我的代码:
public string url = "http://servername.com/api/dogs/1";
.
.
.
void Start() {
StartCoroutine (UpdateDogs ("clean"));
}
IEnumerator UpdateDogs (string button)
{
byte[] myData;
if (button == "feed") {
myData = System.Text.Encoding.UTF8.GetBytes ("?token=" + token + "&health_level=" + healthLevel);
} else {
myData = System.Text.Encoding.UTF8.GetBytes ("?token=" + token + "&cleanliness_level=" + cleanlinessLevel);
}
using (UnityWebRequest www = UnityWebRequest.Put (url, myData)) {
yield return www.Send ();
if (www.isError) {
Debug.Log ("PUT ERROR: " + www.error);
} else {
Debug.Log ("Uploaded!!");
}
}
答案 0 :(得分:1)
看起来你错过了一个&在令牌之后的参数字符串中。
token + "cleanliness_level=
应该是
token + "&cleanliness_level=
与其他可能的参数类似。
myData
中的 UnityWebRequest.Put
仅适用于http正文数据。看起来你不需要那样。相反,您应该将您的查询参数添加到URL,例如:
public string url = "http://servername.com/api/dogs/1";
if (button == "feed") {
url += "?token=" + token + "&health_level=" + healthLevel;
} else {
url += "?token=" + token + "&cleanliness_level=" + cleanlinessLevel;
}
using (UnityWebRequest www = UnityWebRequest.Put (url, "dummy")) { // UnityWebRequest.Put requires a body, see comments below
yield return www.Send ();
if (www.isError) {
Debug.Log ("PUT ERROR: " + www.error);
} else {
Debug.Log ("Uploaded!!");
}
}
答案 1 :(得分:0)
我认为您在发送令牌之前缺少正斜杠。
尝试使用
调试实际发送的内容 Debug.Log (www.text);
接下来的建议是,错误可能是您在接收数据的后端使用的代码。