Skip to content

API UO HTTP_Post de

Codex edited this page Oct 3, 2026 · 1 revision

UO.HTTP_Post

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

UO.HTTP_Get · UO.HTTP_Post · UO.HTTP_Body · UO.HTTP_Header

ClassicUO • Runtime API

Sendet Text per POST an Ihren HTTP-Dienst und liefert dessen Antwort. Telegram/Discord erfordern zusätzliche Protokoll- und Authentifizierungsunterstützung.

Genaue Syntax

UO.HTTP_Post(URL:Any, PostData:Any) -> Any

Parameter

  • URL — Erforderlicher String: vollständige http://- oder https://-Adresse. Normale Netzwerkverbindung des Prozesses, nicht der Spielproxy des Profils; keine Spielverbindung nötig.
  • PostData — Erforderlicher Text; UTF-8 mit Content-Type: text/plain; charset=utf-8. Keine automatische Formularcodierung oder application/json. JsonStringify erzeugt nur Text: Der Dienst muss JSON als text/plain akzeptieren. Eigene Header sind hier nicht einstellbar.

Rückgabewert

String: Antworttext, zugleich HTTP_Body(). Kein Boolean/Statuscode; leer oder nicht leer beweist keinen Erfolg.

Verhalten

  • Der Antwortpuffer gehört dieser Skript-Runtime. Ihr nächstes GET/POST ersetzt ihn; andere Skripte ändern ihn nicht. Keine Speicherung im Profil. Benötigte alte Antworten vorher in Variablen kopieren.
  • GET/POST warten im Skriptthread. Eine Frist von 20 Sekunden umfasst Anfrage und Antwortinhalt. Skriptstopp bricht ab; Body/Header warten nicht. Auch mit File wird der gesamte Inhalt im Speicher gepuffert.
  • charset bestimmt die Decodierung, sonst bzw. bei unbekannter Codierung UTF-8. Auch 4xx/5xx-Inhalte werden gelesen. Netzwerkfehler/Timeout melden einen Fehler und leeren Inhalt/Header; Try/Catch ersetzt keine Antwortprüfung. Skriptabbruch wird weitergegeben. Lokale Schreib-/Argumentfehler können abgefangen werden.
  • POST speichert Inhalt/Header und liefert den Inhalt. Nicht nur wegen leerer Antwort erneut senden: Der Server kann bereits gehandelt haben. accepted/status sind Dienstvereinbarungen.

Interne Funktionen: vom Aufruf zum Ergebnis

Tatsächliche Client-Schritte, keine zusätzlichen Befehle: GET/POST rufen HttpRequest auf; Body/Header lesen nur das Runtime-Ergebnis.

1. ExecuteClientApiCompatibility

POST speichert Inhalt/Header und liefert den Inhalt. Nicht nur wegen leerer Antwort erneut senden: Der Server kann bereits gehandelt haben. accepted/status sind Dienstvereinbarungen.

String: Antworttext, zugleich HTTP_Body(). Kein Boolean/Statuscode; leer oder nicht leer beweist keinen Erfolg.

Projektquelle: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; Funktion ExecuteClientApiCompatibility.

2. HttpRequest

GET/POST warten im Skriptthread. Eine Frist von 20 Sekunden umfasst Anfrage und Antwortinhalt. Skriptstopp bricht ab; Body/Header warten nicht. Auch mit File wird der gesamte Inhalt im Speicher gepuffert.

charset bestimmt die Decodierung, sonst bzw. bei unbekannter Codierung UTF-8. Auch 4xx/5xx-Inhalte werden gelesen. Netzwerkfehler/Timeout melden einen Fehler und leeren Inhalt/Header; Try/Catch ersetzt keine Antwortprüfung. Skriptabbruch wird weitergegeben. Lokale Schreib-/Argumentfehler können abgefangen werden.

Projektquelle: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; Funktion HttpRequest.

Tatsächliche Client-Schritte, keine zusätzlichen Befehle: GET/POST rufen HttpRequest auf; Body/Header lesen nur das Runtime-Ergebnis.

Beispiele

Vereinbarte Antwort prüfen

# Vereinbarte Antwort prüfen
#
# Sendet Text per POST an Ihren HTTP-Dienst und liefert dessen Antwort. Telegram/Discord
# erfordern zusätzliche Protokoll- und Authentifizierungsunterstützung.
#
# String: Antworttext, zugleich HTTP_Body(). Kein Boolean/Statuscode; leer oder nicht leer
# beweist keinen Erfolg.

SUB Main()
    # Ihr Dienst muss auf Route stopped mit accepted antworten. True prüft diesen Text, nicht den
    # HTTP-Code.
    # example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet
    # echte HTTP-Anfragen, aber keine Spielaktionen.

    Dim reply = UO.HTTP_Post("https://example.com/basic-event", "Route stopped")
    Return Trim(reply) = "accepted"
END SUB

Erläuterung der Parameter und Ausführung:

  • Ihr Dienst muss auf Route stopped mit accepted antworten. True prüft diesen Text, nicht den HTTP-Code.
  • example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet echte HTTP-Anfragen, aber keine Spielaktionen.

Strukturierten Bericht senden

# Strukturierten Bericht senden
#
# Sendet Text per POST an Ihren HTTP-Dienst und liefert dessen Antwort. Telegram/Discord
# erfordern zusätzliche Protokoll- und Authentifizierungsunterstützung.
#
# String: Antworttext, zugleich HTTP_Body(). Kein Boolean/Statuscode; leer oder nicht leer
# beweist keinen Erfolg.

SUB Main()
    # JsonStringify maskiert den Zeilenumbruch. Content-Type bleibt text/plain. JSON-Antwort:
    # status, sonst unknown; bei Fehler invalid response.
    # example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet
    # echte HTTP-Anfragen, aber keine Spielaktionen.

    Dim report = Dictionary()
    report["event"] = "route-stopped"
    report["text"] = "line one" & Chr(10) & "line two"
    Dim reply = UO.HTTP_Post("https://example.com/basic-report", JsonStringify(report))
    Try
        Dim result = JsonParse(reply)
        Return result.Get("status", "unknown")
    Catch problem
        Return "invalid response"
    End Try
END SUB

Erläuterung der Parameter und Ausführung:

  • JsonStringify maskiert den Zeilenumbruch. Content-Type bleibt text/plain. JSON-Antwort: status, sonst unknown; bei Fehler invalid response.
  • example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet echte HTTP-Anfragen, aber keine Spielaktionen.

Antwort behalten

# Antwort behalten
#
# Sendet Text per POST an Ihren HTTP-Dienst und liefert dessen Antwort. Telegram/Discord
# erfordern zusätzliche Protokoll- und Authentifizierungsunterstützung.
#
# String: Antworttext, zugleich HTTP_Body(). Kein Boolean/Statuscode; leer oder nicht leer
# beweist keinen Erfolg.

SUB Main()
    # firstReply/firstHeaders bewahren POST-Daten; GET ersetzt anschließend nur die internen Puffer.
    # example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet
    # echte HTTP-Anfragen, aber keine Spielaktionen.

    Dim firstReply = UO.HTTP_Post("https://example.com/basic-event", "Route stopped")
    Dim firstHeaders = UO.HTTP_Header()
    UO.HTTP_Get("https://example.com/basic-status")
    Return firstReply & "|" & firstHeaders
END SUB

Erläuterung der Parameter und Ausführung:

  • firstReply/firstHeaders bewahren POST-Daten; GET ersetzt anschließend nur die internen Puffer.
  • example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet echte HTTP-Anfragen, aber keine Spielaktionen.

Clone this wiki locally