Skip to content

API UO HTTP_Get zh tw

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

透過 HTTP/HTTPS 下載設定或檔案,不執行下載的程式碼,也不控制遊戲連線。

完整語法

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

參數

  • URL — 必要的 String:完整的 http:// 或 https:// 位址。使用程序的一般網路連線,不使用設定檔的遊戲代理伺服器;不必先登入遊戲。
  • LStream — 可選的 MemoryStream() 或 File(path)。省略、0 或 Nothing 表示透過 HTTP_Body() 取文字。位元組會取代整個串流,MemoryStream 位置回到 0。File 會覆寫檔案,其父目錄須已存在。其他型別會在送出請求前被拒絕。

傳回值

Unit:沒有傳回值,不是 Boolean、ID 或位元組數。文字用 HTTP_Body(),二進位資料由串流讀取。

行為

  • 回應屬於此腳本的 runtime。其下一次 GET/POST 會取代回應,其他脚本不會影響它;不存入設定檔。要保留舊回應,先複製到變數。
  • GET/POST 在腳本執行緒等待,請求與完整內文共用 20 秒期限。停止腳本會取消等待,Body/Header 不等待。即使使用 File,仍會先把全部內文載入記憶體。
  • 依 charset 解碼;缺少或未知時使用 UTF-8,也會讀取 4xx/5xx 回應。網路錯誤或逾時會顯示錯誤並清空內文與標頭;Try/Catch 不能取代回應驗證。腳本取消會繼續傳遞,本機寫入或參數錯誤可被捕捉。
  • 無串流的 GET 保存文字與標頭;有串流則保存位元組與標頭並清空 HTTP_Body。空回應或網路錯誤也會清空串流。覆寫重要檔案前應先下載到記憶體並驗證。

內部函式:從呼叫到結果

這是客戶端的實作步驟,不是額外命令。GET/POST 呼叫 HttpRequest;Body/Header 只讀取所屬 runtime 的結果。

1. ExecuteClientApiCompatibility

無串流的 GET 保存文字與標頭;有串流則保存位元組與標頭並清空 HTTP_Body。空回應或網路錯誤也會清空串流。覆寫重要檔案前應先下載到記憶體並驗證。

Unit:沒有傳回值,不是 Boolean、ID 或位元組數。文字用 HTTP_Body(),二進位資料由串流讀取。

專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; 函式 ExecuteClientApiCompatibility.

2. HttpRequest

GET/POST 在腳本執行緒等待,請求與完整內文共用 20 秒期限。停止腳本會取消等待,Body/Header 不等待。即使使用 File,仍會先把全部內文載入記憶體。

依 charset 解碼;缺少或未知時使用 UTF-8,也會讀取 4xx/5xx 回應。網路錯誤或逾時會顯示錯誤並清空內文與標頭;Try/Catch 不能取代回應驗證。腳本取消會繼續傳遞,本機寫入或參數錯誤可被捕捉。

專案原始碼: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 函式 HttpRequest.

這是客戶端的實作步驟,不是額外命令。GET/POST 呼叫 HttpRequest;Body/Header 只讀取所屬 runtime 的結果。

範例

讀取魔力門檻

# 讀取魔力門檻
#
# 透過 HTTP/HTTPS 下載設定或檔案,不執行下載的程式碼,也不控制遊戲連線。
#
# Unit:沒有傳回值,不是 Boolean、ID 或位元組數。文字用 HTTP_Body(),二進位資料由串流讀取。

SUB Main()
    # JSON 物件 minMana:0..100 的數字轉為 Integer,其他情況用 30。這是腳本設定,不是目前魔力。
    # example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

    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

參數與執行說明:

  • JSON 物件 minMana:0..100 的數字轉為 Integer,其他情況用 30。這是腳本設定,不是目前魔力。
  • example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

先檢查再儲存

# 先檢查再儲存
#
# 透過 HTTP/HTTPS 下載設定或檔案,不執行下載的程式碼,也不控制遊戲連線。
#
# Unit:沒有傳回值,不是 Boolean、ID 或位元組數。文字用 HTTP_Body(),二進位資料由串流讀取。

SUB Main()
    # 只有非空位元組才覆寫工作目錄的 download.bin。True 不表示格式正確,仍須驗證內容。
    # example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

    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

參數與執行說明:

  • 只有非空位元組才覆寫工作目錄的 download.bin。True 不表示格式正確,仍須驗證內容。
  • example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

直接寫入檔案

# 直接寫入檔案
#
# 透過 HTTP/HTTPS 下載設定或檔案,不執行下載的程式碼,也不控制遊戲連線。
#
# Unit:沒有傳回值,不是 Boolean、ID 或位元組數。文字用 HTTP_Body(),二進位資料由串流讀取。

SUB Main()
    # 即使回應為空也會覆寫工作目錄的 http-download.bin。Using 釋放物件;Main 傳回標頭。
    # example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

    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

參數與執行說明:

  • 即使回應為空也會覆寫工作目錄的 http-download.bin。Using 釋放物件;Main 傳回標頭。
  • example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

Clone this wiki locally