0

如何使用 UnityWebRequest 发送 PUT 请求?

正在发送 PUT;Uploaded!!正在打印到控制台。但是,没有任何更新。我认为我的格式myData不正确。

我尝试将 PUT 发送到的实际 URL 的格式类似于...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!!");
}
}
4

2 回答 2

1

看起来您在令牌后的参数字符串中缺少 & 。

token + "cleanliness_level=

应该

token + "&cleanliness_level=

对于其他可能的参数也是如此。

myDatainUnityWebRequest.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!!");
    }
}
于 2017-03-09T07:01:09.097 回答
0

我认为您在发送令牌时缺少正斜杠。

尝试调试您实际发送的内容

 Debug.Log (www.text);

下一个建议是,错误可能与您在后端接收数据时使用的代码有关。

于 2017-03-09T05:46:54.373 回答