WebRequestManager - Komfortabel einfache WebRequests absetzen

In einigen meiner Spiele verwende ich eine Laravel-basierte API, um Konfigurationen und andere Daten von einem Webserver zu laden. Zu diesem Zweck habe ich einen Dienst entwickelt, mit dem man einfach textbasierte Anfragen (normalerweise JSON) an einen Server senden kann. Grundlage dafür sind natürlich die eingebauten Networking-Klassen von Unity. Der so entstandene Service wird über einen Manager zur Verfügung gestellt: den WebRequestManager.

So nutzt Du den WebRequestManager

Du kannst einfache WebRequests an eine URL senden:

WebRequestManager.service?.Send("https://myapi.com");

Natürlich kannst Du auch eine anderes Verb als GET verwenden:

WebRequestManager.service?.Send("https://myapi.com", WebRequestMethod.POST);

Dann ist es natürlich sinnvoll auch eigene Daten mitzusenden:

WebRequestManager.service?.Send("https://myapi.com", WebRequestMethod.POST, "my body");

Und zu guter Letzt kannst Du auch eigene Header setzen:

var headers = new Dictionary<string, string>();
headers.Add("Content-Type", "application/json");
WebRequestManager.service?.Send("https://myapi.com", WebRequestMethod.POST, "my body", headers);

Server-Antworten verarbeiten

Da es sich hier um asynchrone Prozesse handelt, musst Du Dich zur Verarbeitung der Antwort an die entsprechenden Events hängen. Schaue Dir dazu die Erklärungen zum PubSubManager an.

Folgendes gibt es bei diesem Modul zu beachten:

  • Events werden im Channel WebRequest veröffentlicht.

  • Der Event WebRequestSuccess wird veröffentlich, wenn der Request erfolgreich war.

  • Der Event WebRequestFailure wird gesendet, wenn der Request fehlgeschlagen ist:

Dein Feedback ist wichtig!

Was hältst Du von den hier vorgestellten Services? Fehlt Dir etwas oder funktioniert etwas nicht wie erwartet? Wie immer freue ich mich über Feedback. Lass mich gerne wissen was Du über dieses Modul denkst. Dafür kannst Du zum Beispiel die Kommentarfunktion unter dem Artikel nutzen. Weitere Kontakt-Möglichkeiten findest Du auf hier. Wenn Du einen Bug gefunden hast oder Dir eine Erweiterung wünscht, erstelle bitte einen Issue im GitHub-Repository. Weitere Dokumentation findest Du wie immer in der README des entsprechenden Moduls.

Noch keine Kommentare vorhanden.