Suche…


Erhalten

Get holt Daten vom Webserver. und new WWW("https://urlexample.com"); mit einer URL aber ohne einen zweiten Parameter wird ein Get durchgeführt .

dh

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour 
{
    public string url = "http://google.com";
    
    IEnumerator Start() 
    {
        WWW www = new WWW(url); // One get.
        yield return www;
        Debug.Log(www.text); // The data of the url.
    }
}

Einfache Buchung (Post-Felder)

Jede Instanz von WWW mit einem zweiten Parameter ist ein Beitrag .

Hier ein Beispiel, um die Benutzer-ID und das Kennwort an den Server zu senden.

void Login(string id, string pwd)
{
    WWWForm dataParameters = new WWWForm();    // Create a new form.
    dataParameters.AddField("username", id); 
    dataParameters.AddField("password", pwd);   // Add fields.
    WWW www = new WWW(url+"/account/login",dataParameters);
    StartCoroutine("PostdataEnumerator", www);
}

IEnumerator PostdataEnumerator(WWW www)
{
    yield return www;
    if (!string.IsNullOrEmpty(www.error))
    {
        Debug.Log(www.error);
    }
    else
    {
        Debug.Log("Data Submitted");
    }
}

Post (Datei hochladen)

Eine Datei auf den Server hochladen ist ebenfalls ein Beitrag. Sie können eine Datei ganz einfach über das WWW hochladen ( siehe unten):

Laden Sie eine Zip-Datei auf den Server hoch

string mainUrl = "http://server/upload/";
string saveLocation;

void Start() 
{
    saveLocation = "ftp:///home/xxx/x.zip"; // The file path.
    StartCoroutine(PrepareFile());
}

// Prepare The File.
IEnumerator PrepareFile() 
{
    Debug.Log("saveLoacation = " + saveLocation);
     
    // Read the zip file.
    WWW loadTheZip = new WWW(saveLocation);

    yield return loadTheZip;

    PrepareStepTwo(loadTheZip);
}

void PrepareStepTwo(WWW post) 
{
    StartCoroutine(UploadTheZip(post));
}

// Upload.
IEnumerator UploadTheZip(WWW post) 
{
    // Create a form.
    WWWForm form = new WWWForm();
 
    // Add the file.
    form.AddBinaryData("myTestFile.zip",post.bytes,"myFile.zip","application/zip");
 
    // Send POST request.
    string url = mainUrl;
    WWW POSTZIP = new WWW(url,form);
 
    Debug.Log("Sending zip...");
    yield return POSTZIP;
    Debug.Log("Zip sent!");
}

In diesem Beispiel wird Coroutine zum Vorbereiten und Hochladen der Datei verwendet. Wenn Sie mehr über Unity-Coroutines erfahren möchten, besuchen Sie Coroutines .

Eine Anfrage an den Server senden

Es gibt viele Möglichkeiten, mit Servern über Unity als Client zu kommunizieren (je nach Zweck sind einige Methoden besser als andere). Zunächst muss die Notwendigkeit des Servers ermittelt werden, um Operationen effektiv vom und zum Server senden zu können. In diesem Beispiel senden wir einige Daten zur Validierung an unseren Server.

Höchstwahrscheinlich hat der Programmierer auf seinem Server eine Art Handler eingerichtet, um Ereignisse zu empfangen und dem Client entsprechend zu antworten - dies ist jedoch nicht in diesem Beispiel.

C #:

using System.Net;
using System.Text;

public class TestCommunicationWithServer
{
    public string SendDataToServer(string url, string username, string password)
    {
        WebClient client = new WebClient();

        // This specialized key-value pair will store the form data we're sending to the server
        var loginData = new System.Collections.Specialized.NameValueCollection();
        loginData.Add("Username", username);
        loginData.Add("Password", password);

        // Upload client data and receive a response
        byte[] opBytes = client.UploadValues(ServerIpAddress, "POST", loginData);
    
        // Encode the response bytes into a proper string
        string opResponse = Encoding.UTF8.GetString(opBytes);

        return opResponse;
    }

Als erstes müssen Sie mit ihren using-Anweisungen werfen, um die Klassen WebClient und NameValueCollection verwenden zu können.

In diesem Beispiel nimmt die SendDataToServer-Funktion drei (optionale) Zeichenfolgeparameter an:

  1. URL des Servers, mit dem wir kommunizieren
  2. Erste Daten
  3. Zweite Daten, die wir an den Server senden

Der Benutzername und das Kennwort sind die optionalen Daten, die ich an den Server sende. In diesem Beispiel verwenden wir es, um von einer Datenbank oder einem anderen externen Speicher aus weiter validiert zu werden.

Nachdem wir unsere Struktur eingerichtet haben, instanziieren wir einen neuen WebClient, der zum Senden unserer Daten verwendet wird. Nun müssen wir unsere Daten in unsere NameValueCollection laden und die Daten auf den Server hochladen.

Die UploadValues-Funktion berücksichtigt auch 3 notwendige Parameter:

  1. IP-Adresse des Servers
  2. HTTP-Methode
  3. Daten, die Sie senden (in unserem Fall Benutzername und Passwort)

Diese Funktion gibt ein Byte-Array der Antwort vom Server zurück. Das zurückgegebene Byte-Array muss in eine richtige Zeichenfolge codiert werden, um die Antwort tatsächlich bearbeiten und analysieren zu können.

Man könnte so etwas machen:

if(opResponse.Equals(ReturnMessage.Success))
{
    Debug.Log("Unity client has successfully sent and validated data on server.");
}

Nun sind Sie vielleicht immer noch verwirrt, also werde ich kurz erklären, wie Sie mit einem Antwortserver umgehen.

In diesem Beispiel verwende ich PHP, um die Antwort des Clients zu bearbeiten. Ich würde die Verwendung von PHP als Back-End-Skriptsprache empfehlen, da sie äußerst vielseitig, einfach zu bedienen und vor allem schnell ist. Es gibt definitiv andere Möglichkeiten, mit einer Antwort auf einem Server umzugehen, aber PHP ist meiner Meinung nach bei weitem die einfachste und einfachste Implementierung in Unity.

PHP:

// Check to see if the unity client send the form data
if(!isset($_REQUEST['Username']) || !isset($_REQUEST['Password']))
{
    echo "Empty";
}
else
{ 
    // Unity sent us the data - its here so do whatever you want 
  
    echo "Success";
   
}

Dies ist also der wichtigste Teil - das "Echo". Wenn unser Client die Daten auf den Server hochlädt, speichert der Client die Antwort (oder Ressource) in diesem Byte-Array. Sobald der Client die Antwort erhalten hat, wissen Sie, dass die Daten überprüft wurden, und Sie können im Client fortfahren, sobald das Ereignis eingetreten ist. Sie müssen auch darüber nachdenken, welche Art von Daten Sie (in einem gewissen Umfang) senden und wie Sie den tatsächlich gesendeten Betrag minimieren können.

Dies ist also nur eine Möglichkeit, Daten von Unity zu senden / zu empfangen - es gibt andere Möglichkeiten, die je nach Projekt für Sie wirksamer sind.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow