如何使用UnityWebRequest发送PUT请求?

时间:2017-03-09 05:25:34

标签: c# rest unity5 put unity2d

如何使用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!!");
}
}

2 个答案:

答案 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);

接下来的建议是,错误可能是您在接收数据的后端使用的代码。