Skip to content

API UO HTTP_Get de

Codex edited this page Oct 3, 2026 · 1 revision

UO.HTTP_Get

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

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

ClassicUO • Runtime API

Lädt Einstellungen oder Dateien über HTTP/HTTPS. Führt den Inhalt nicht aus und steuert keine Spielverbindung.

Genaue Syntax

UO.HTTP_Get(URL:Any) -> Unit
UO.HTTP_Get(URL:Any, LStream:Any) -> Unit

Parameter

  • URL — Erforderlicher String: vollständige http://- oder https://-Adresse. Normale Netzwerkverbindung des Prozesses, nicht der Spielproxy des Profils; keine Spielverbindung nötig.
  • LStream — Optional MemoryStream() oder File(path). Weglassen, 0 oder Nothing: Text über HTTP_Body(). Bytes ersetzen den gesamten Stream; MemoryStream beginnt danach bei 0. File überschreibt die Datei; der Ordner muss existieren. Andere Typen werden vor der Anfrage abgelehnt.

Rückgabewert

Unit: kein Wert, kein Boolean, keine ID oder Byteanzahl. Text mit HTTP_Body(), Bytes aus dem Stream lesen.

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.
  • GET ohne Stream speichert Text/Header; mit Stream Bytes/Header und leert HTTP_Body. Auch leere Antworten/Netzwerkfehler leeren den Stream. Wichtige Dateien zuerst im Speicher laden und validieren.

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

GET ohne Stream speichert Text/Header; mit Stream Bytes/Header und leert HTTP_Body. Auch leere Antworten/Netzwerkfehler leeren den Stream. Wichtige Dateien zuerst im Speicher laden und validieren.

Unit: kein Wert, kein Boolean, keine ID oder Byteanzahl. Text mit HTTP_Body(), Bytes aus dem Stream lesen.

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

Manaschwelle laden

# Manaschwelle laden
#
# Lädt Einstellungen oder Dateien über HTTP/HTTPS. Führt den Inhalt nicht aus und steuert keine
# Spielverbindung.
#
# Unit: kein Wert, kein Boolean, keine ID oder Byteanzahl. Text mit HTTP_Body(), Bytes aus dem
# Stream lesen.

SUB Main()
    # JSON-Objekt minMana: Zahl 0..100 wird Integer, sonst 30. Eine Skripteinstellung, nicht
    # aktuelles Mana.
    # example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet
    # echte HTTP-Anfragen, aber keine Spielaktionen.

    UO.HTTP_Get("https://example.com/basic-config.json")
    Try
        Dim config = JsonParse(UO.HTTP_Body())
        Dim threshold = config.Get("minMana", 30)
        If IsNumeric(threshold) Then
            If threshold >= 0 AndAlso threshold <= 100 Then
                Return CInt(threshold)
            End If
        End If
    Catch problem
    End Try
    Return 30
END SUB

Erläuterung der Parameter und Ausführung:

  • JSON-Objekt minMana: Zahl 0..100 wird Integer, sonst 30. Eine Skripteinstellung, nicht aktuelles Mana.
  • example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet echte HTTP-Anfragen, aber keine Spielaktionen.

Bytes vor dem Speichern prüfen

# Bytes vor dem Speichern prüfen
#
# Lädt Einstellungen oder Dateien über HTTP/HTTPS. Führt den Inhalt nicht aus und steuert keine
# Spielverbindung.
#
# Unit: kein Wert, kein Boolean, keine ID oder Byteanzahl. Text mit HTTP_Body(), Bytes aus dem
# Stream lesen.

SUB Main()
    # Nur nichtleere Daten überschreiben download.bin im Arbeitsordner. True bestätigt keinen
    # Dateityp; Inhalt zusätzlich validieren.
    # example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet
    # echte HTTP-Anfragen, aber keine Spielaktionen.

    Dim data = MemoryStream()
    Using data
        UO.HTTP_Get("https://example.com/route-data.bin", data)
        If data.Length() = 0 Then
            Return False
        End If
        data.SaveToFile("download.bin")
        Return True
    End Using
END SUB

Erläuterung der Parameter und Ausführung:

  • Nur nichtleere Daten überschreiben download.bin im Arbeitsordner. True bestätigt keinen Dateityp; Inhalt zusätzlich validieren.
  • example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet echte HTTP-Anfragen, aber keine Spielaktionen.

Direkt in Datei schreiben

# Direkt in Datei schreiben
#
# Lädt Einstellungen oder Dateien über HTTP/HTTPS. Führt den Inhalt nicht aus und steuert keine
# Spielverbindung.
#
# Unit: kein Wert, kein Boolean, keine ID oder Byteanzahl. Text mit HTTP_Body(), Bytes aus dem
# Stream lesen.

SUB Main()
    # http-download.bin im Arbeitsordner wird auch mit leerem Inhalt überschrieben. Using gibt das
    # Objekt frei; zurück kommen die Header.
    # example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet
    # echte HTTP-Anfragen, aber keine Spielaktionen.

    Dim output = File("http-download.bin")
    Using output
        UO.HTTP_Get("https://example.com/route-data.bin", output)
    End Using
    Return UO.HTTP_Header()
END SUB

Erläuterung der Parameter und Ausführung:

  • http-download.bin im Arbeitsordner wird auch mit leerem Inhalt überschrieben. Using gibt das Objekt frei; zurück kommen die Header.
  • example.com stellt diesen Dienst nicht bereit. Durch eigene URLs ersetzen: Das Beispiel sendet echte HTTP-Anfragen, aber keine Spielaktionen.

Clone this wiki locally