SyncHTTP - Synchrone HTTP Kommunikation

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • SyncHTTP - Synchrone HTTP Kommunikation

      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

      PAWN-Quellcode

      1. 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

      PAWN-Quellcode

      1. new Webseite[2000];
      2. new HTTP_Status = SynchronizedHTTP("www.example.com", "", Webseite, sizeof Webseite, HTTP_GET);
      3. if(HTTP_Status == 200)
      4. {
      5. printf("Die Seite wurde erfolgreich geladen.\nInhalt: %s", Webseite);
      6. }
      7. else
      8. {
      9. print("Die Seite konnte nicht geladen werden.");
      10. }


      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
      PAWNit gratis nutzen?
      Geschenkcode: 2017VQXPKB8V3KA
      Hier könnte Ihre Werbung stehen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von |-|auke () aus folgendem Grund: Rechtschreibfehler

    • |-|auke schrieb:

      Dieses vereinfacht und erleichtert das Scripting von bestimmten Funktionen enorm!

      In wiefern vereinfacht es das Scripting?

      Ist das nicht eher eine sehr Subjektive Einschätzung?

      Für mich ist es eher einfacher das asyncron über ein Callback laufen zu lassen.
      Wo ist also der genaue Vorteil?
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski
    • @NicoWiss:
      Wenn du die HTTP Funktion von SA:MP nutzt, dann erhälst du die Antwort erst in einem Callback - also in einer anderen Funktion, welche asynchron aufgerufen wird. Das heißt du kannst mit den Daten nicht in einem Ablauf arbeiten.
      SyncHTTP kann dir die Rückgabe direkt in deinem Programmablauf geben.

      @BlackAce:
      Das ist weniger Subjektiv als Situationsbedingt. Wenn man auf eine kleine Rückgabe angewiesen bist (z.B. 256 bytes), dann ist es einfacher, wenn man die Daten in einem Ablauf verarbeiten kann. Daher ist diese Funktion auch kein Ersatz oder Alternative zu der asynchronen Funktion, die es bereits gibt.
      PAWNit gratis nutzen?
      Geschenkcode: 2017VQXPKB8V3KA
      Hier könnte Ihre Werbung stehen.
    • Der Server hängt sich dann 5 Sekunden auf, wenn die HTTP URL nicht erreichbar bzw. offline ist, weil er auf einen Rückgabewert wartet, richtig?
      Das ist das gleiche Probleme, wie bei den alten MySQL Plugins.
      Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."
    • @Atrox: richtig, aber das ist kein Problem, sondern genau das, was die Funktion machen soll. Ob der Server erreichbar ist kann man vorher mit der asynchronen Funktion testen oder den Timeout verringern.

      @NicoWiss: Du kannst alle Parameter mit einem & verbinden. Du kannst dir das in der neuen WBB_Connect include abgucken :)
      PAWNit gratis nutzen?
      Geschenkcode: 2017VQXPKB8V3KA
      Hier könnte Ihre Werbung stehen.

    • Atrox schrieb:

      Der Server hängt sich dann 5 Sekunden auf, wenn die HTTP URL nicht erreichbar bzw. offline ist, weil er auf einen Rückgabewert wartet, richtig?

      Plugins laufen aber in einem eigenen Thread, von daher ist da kein Problem ^^
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski
    • Hami schrieb:

      |-|auke schrieb:

      [...] Inhalt: %s", Webseite);
      Was gibt es den für einen Inhalt wieder?

      Alles was im Body der HTTP Response steht, sprich der HTML Code der Webseite.

      NicoWiss schrieb:

      |-|auke schrieb:

      @Atrox: richtig, aber das ist kein Problem, sondern genau das, was die Funktion machen soll. Ob der Server erreichbar ist kann man vorher mit der asynchronen Funktion testen oder den Timeout verringern.

      @NicoWiss: Du kannst alle Parameter mit einem & verbinden. Du kannst dir das in der neuen WBB_Connect include abgucken :)

      Wo find ich die

      Hier
      PAWNit gratis nutzen?
      Geschenkcode: 2017VQXPKB8V3KA
      Hier könnte Ihre Werbung stehen.
    • So in etwa:

      PAWN-Quellcode

      1. new Result[32];
      2. new HTTP_Status = SynchronizedHTTP("www.nicowiss.de", "email=nicowiss@xyz.de&benutzername=NicoWiss", Result, sizeof Result, HTTP_GET);
      3. if(HTTP_Status == 200)
      4. {
      5. printf("Erfolgreich! %s", Result);
      6. }
      7. else
      8. {
      9. printf("Fehler %d", HTTP_Status);
      10. }
      PAWNit gratis nutzen?
      Geschenkcode: 2017VQXPKB8V3KA
      Hier könnte Ihre Werbung stehen.
    • Bei mir wird der Text so ausgegeben: (ä) ö und wenn ich ä mache steht im Dialog ä...
      Und \n wird auch ignoriert. Weiß jemand eine Möglichkeit?
      /edit: Das mit den Absätzen ist jetzt geklärt, nur das mit den Umlauten nicht. :wacko:
      @|-|auke:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von [GDM] John ()

    • lovelins12 schrieb:


      PAWN-Quellcode

      1. new status_code = 0, website[500];
      2. status_code = SynchronizedHTTP("http://test.xxxxxx.de/index.php/LoginServer/", "username=hzuggugi8&password=iohgiutg98&api=hhhh", website, sizeof website, HTTP_POST);// <- anpassen POST/GET
      3. if(status_code != 200) {
      4. // Error
      5. printf("Fehler: %s", website);
      6. return 0;
      7. }
      8. return 1;


      Der String "website" erhält dann die Rückgabe des Links.
      :guckb: