2015-04-16 5 views
6

Ich bin ziemlich neu in Unity und einige Probleme mit RESTFul in Unity. Ich möchte einige Daten auf dem Server mithilfe von HTTP PUT aktualisieren, aber die WWWW-Klasse in Unity unterstützt HTTP PUT nicht. Ich habe auch ein HttpWebRequest-Beispiel versucht, das sich auf HTTP PUT bezieht, aber immer den Fehlercode 400: Bad Request erhalten.Unity: Verwenden Sie HTTP PUT in Unity3D

Wie kann ich dieses Problem lösen? Muss ich bei der Aktualisierung alle Schlüssel/Wert-Paare auflisten oder nur die Paare auflisten, die ich ändern möchte?

Antwort

0

Ich habe es durch die folgenden Codes gearbeitet HttpWebRequest

void updatePlayer(){ 
    var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://yourAPIUrl"); 
    httpWebRequest.ContentType = "text/json"; 
    httpWebRequest.Method = "PUT"; 

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
    { 
     string json = "{" + 
      "'ID': '100'," + 
      "'ClubName': 'DEF'," + 
      "'Number': 102," + 
      "'Name': 'AnNT'," + 
      "'Position': 'GK'," + 
      "'DateOfBirth': '2010-06-15T00:00:00'," + 
      "'PlaceOfBirth': 'Hanoi'," + 
      "'Weight': 55," + 
      "'Height': 1.55," + 
      "'Description': 'des'," + 
      "'ImageLink': 'annt.png'," + 
      "'Status': false," + 
      "'Age': '12'" + 
      "}";    
     streamWriter.Write(json); 
    } 
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
    { 
     var responseText = streamReader.ReadToEnd(); 
     //Now you have your response. 
     //or false depending on information in the response 
     Debug.Log(responseText);    
    } 
} 
1

Ich empfehle BestHTTP package anstelle der WWW-Standardklasse zu betrachten. Es ist billig (fast alle Unity3D-Assets sind im Vergleich zu typischen Middleware-Preisen in der Spieleindustrie) und nach persönlicher Erfahrung ziemlich anständig. Alternativ können Sie den Standard .NET sockets verwenden.

+0

Ich habe auch BestHTTP überprüft, aber wir sind Student und machen Capstone-Projekt für den Abschluss. Bei uns ist dieser Preis ein großes Problem –

+0

Dann sieht es so aus, als müssten Sie Sockets verwenden. Die von Unity bereitgestellte WWW-Klasse ist ziemlich einfach und eignet sich eher für einfache Downloads als für die Anbindung an API. –

+0

Für meine zweite Frage. Muss ich alle Schlüssel/Wert-Paare über HTTP PUT senden oder nur die Paare, die ich aktualisieren muss? Wenn ich die API mit der POSTMAN-Erweiterung für Chrome teste, muss ich alle Schlüssel/Wert-Paare ausfüllen. Fehler wird auftreten, wenn ich nur Paare auflisten, die aktualisiert werden müssen –

7

Wenn Sie sich nicht für eine 3rd-Party-Plugin suchen und Ihren Server vorausgesetzt, unterstützt es dann eine Methode, die Sie bei Verwendung der „X aussehen könnte -HTTP-Method-Override "HTTP-Header. Ihr Client sendet die Daten per POST an den Server, aber der Server behandelt dies als Wert im X-HTTP-Method-Override-Header (z. B. PUT).

Ich habe das schon früher sehr gut genutzt, wo unser Server es unterstützte. Ein Beispiel für die Verwendung in Unity3d wäre beispielsweise:

+1

Danke für Ihre Frage. Es hat perfekt funktioniert! –