SyncHTTP
SyncHTTP ist ein neues Plugin von mir, welches nur eine einzige Funktion bereit stellt.
Dieses Plugin kann genutzt werden um synchrone HTTP Anfragen zu versenden. Im Gegensatz zu der asynchronen HTTP Funktion von SA:MP wartet SyncHTTP auf die Antwort und gibt sie zurück.
Dieses vereinfacht und erleichtert das Scripting von bestimmten Funktionen enorm!
Mögliche Einsatzgebiete
- Kommunikation mit Control Panel
- Auslesen einfacher Daten von Drittanbietern, wie zum Beispiel Wetterinformationen
- Prüfen ob ein Server online ist
Geschrieben habe ich das Plugin eigentlich nur, um WBB_Connect 3 entwickeln zu können. Die neue WBB_Connect API arbeitet zusammen mit diesem Plugin sehr schnell und zuverlässig.
Funktion
native SynchronizedHTTP ( URL[ ] , Data[ ] , const Result[] , Length , Method = HTTP_POST , Timeout = 5 , EnableDebug = false );
Parameter:
[table=3][*]Parameter[*]Typ[*]Beschreibung
[*]URL[*]string[*]Die Adresse, die aufgerufen werden soll. (ohne http://)
[*]Data[*]Typ[*]Die Daten, die an den Server gesendet werden sollen als normaler GET oder POST string. (Informationen)
[*]Result[*]ref string[*]Der String, der die Rückgabe - also den Inhalt der Seite - enthalten soll.
[*]Length[*]int[*]Die Länge des Strings, der die Rückgabe enthalten soll.
[*]Method[*]int[*]Die Methode, die zur Argumentenübertragung verwendet werden soll. Möglich sind HTTP_GET und HTTP_POST. Dieser Parameter ist optional.
[*]Timeout[*]int[*]Die Zeit in Sekunden, die eine Anfrage maximal benötigen darf, bevor sie abgebrochen wird. Dieser Parameter ist optional.
[*]EnableDebug[*]bool[*]Aktiviert oder deaktiviert den intigrierten Debug-Modus. Dieser ist nützlich um Fehler zu finden und die Zeit einer Anfrage zu messen. Dieser Parameter ist optional.[/table]
Rückgabe:
Den HTTP-Statuscode der Anfrage als Zahl.
Verwendungsbeispiel
new Webseite[2000];
new HTTP_Status = SynchronizedHTTP("www.example.com", "", Webseite, sizeof Webseite, HTTP_GET);
if(HTTP_Status == 200)
{
printf("Die Seite wurde erfolgreich geladen.\nInhalt: %s", Webseite);
}
else
{
print("Die Seite konnte nicht geladen werden.");
}
Hinweis
DIe synchronen HTTP Anfragen sollten nur sehr kleine Inhalte von Webseiten abfragen. In der Zeit, in der die Funktion ausgeführt wird, kann der SA:MP Server keine anderen Operationen bearbeiten. Je größer der Inhalt ist, desto länger kann das Laden dauern.
Aber keine Angst, kleine Rückgaben, wie zum Beispiel bei der WBB_Connect API dauern nur einen Bruchteil einer Sekunde.
Installation
Windows:
- Lade dir die Datei SyncHTTP_WIN.zip herunter
- Entpacke die Datei
- Kopiere die Datei "SyncHTTP.dll" in den Ordner "plugins" deines SA:MP Servers
- Kopiere die anderen beiden Dateien ("zlib1.dll" und "libcurl.dll") in den Hauptordner deines Servers. (Dort wo sich die "samp-server.exe" befindet)
- Zum Schluss musst du nur noch das Plugin in deiner server.cfg eintragen und schon können die Funktionen der Include "sync_http.inc" genutzt werden
Linux:
- Lade dir die Datei SyncHTTP_LINUX.zip herunter
- Entpacke die Datei
- Kopiere die Datei "SyncHTTP.so" in den Ordner "plugins" deines SA:MP Servers
- Gehe sicher, dass curl installiert ist. Im Normalfall ist curl schon vorinstalliert. Beipsiel um curl zu installieren: "sudo apt-get install curl".
- Zum Schluss musst du nur noch das Plugin in deiner server.cfg eintragen und schon können die Funktionen der Include "sync_http.inc" genutzt werden
Download
Quellcode