2017-03-09 28 views
0

UnityWebRequestを使用してPUTリクエストを送信するにはどうすればよいですか?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!!"); 
} 
} 

答えて

0

は、あなたが実際に

Debug.Log (www.text); 

次アドバイスを送るものをデバッグしてみ多分エラーは、あなたがデータを受信し、バックエンドに使用しているもののコードであるということです。

+0

UnityWebReqestには「text」はありません。送信されたURLをどのように出力するのですか? 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

'myData'の代わりに' '"または 'null'を使うとエラーになります。エラー: 'ArgumentException:ペイロードデータなしでデータハンドラーを作成できません.'「Hello」のようなランダムな文字列を送信してしまいました。 – falafel

関連する問題