2017-03-09 153 views
0

如何使用UnityWebRequest發送PUT請求?如何使用UnityWebRequest發送PUT請求?

PUT正在發送; Uploaded!!正在打印到控制檯。但是,沒有任何更新。我認爲我錯誤地格式化了myData

我想送把實際的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!!"); 
} 
} 

回答

0

我認爲你缺少一個斜槓前令牌,當你把它。

嘗試調試你實際上

Debug.Log (www.text); 

下一頁建議發送是,也許錯誤是你用什麼代碼在後端接收數據。

+0

UnityWebReqest沒有「文本」。如何打印發送的網址?我在UnityWebRequest頁面上看不到任何適用的內容。 – falafel

+0

打印'www.url.ToString()'給了我'http:// servername.com/api/dogs/1'。這是正確的URL,但我也有參數,我放在'myData'中。那是放正確的地方嗎?我在後面的標記前面添加了一個'/',但仍然沒有正確發送PUT。 – falafel

+0

我誤解了有關www的使用。我認爲它的處理方式與此類似:https://docs.unity3d.com/ScriptReference/WWW.html – Colby

1

看起來您在標記後的參數字符串中缺少&。

token + "cleanliness_level= 

應該是

token + "&cleanliness_level= 

類似地,對於其他可能的參數。

myDataUnityWebRequest.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!!"); 
    } 
} 
+0

我注意到在標記前面缺少'&'以及缺少'?'。進行了調整,仍然無法正常工作。我也嘗試了一個無效的標記,並沒有得到「www.error」,所以我不認爲我的PUT正在發送。我想我的困惑在於......我應該把什麼放在'myData'中? – falafel

+0

我想你應該把它全部放在URL中,而不是在''myData''中。改變了我的答案以表明它。 – RasmusW

+0

當我使用''「'或'null'代替'myData'時出現錯誤。錯誤是:'ArgumentException:無法創建沒有有效載荷數據的數據處理程序'我最終發送了一個像「Hello」這樣的隨機字符串,而且這似乎奏效了! – falafel