Skip to content

API UO HTTP_Post zh tw

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

使用 POST 將文字送到您的 HTTP 服務並傳回答覆。Telegram/Discord 仍需各自的協定及驗證支援。

完整語法

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

參數

  • URL — 必要的 String:完整的 http:// 或 https:// 位址。使用程序的一般網路連線,不使用設定檔的遊戲代理伺服器;不必先登入遊戲。
  • PostData — 必要的內文文字,以 UTF-8 傳送,Content-Type: text/plain; charset=utf-8。不自動編碼表單或改成 application/json。JsonStringify 只產生文字,服務必須接受 text/plain 的 JSON;這些命令不能設定任意標頭。

傳回值

String:回應文字,同時存入 HTTP_Body()。不是 Boolean 或 HTTP 狀態;空白或非空白都不能單獨證明成功。

行為

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

內部函式:從呼叫到結果

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

1. ExecuteClientApiCompatibility

POST 保存內文與標頭並傳回內文。不要只因空回應就重送:伺服器可能已執行動作。accepted/status 是您服務的約定。

String:回應文字,同時存入 HTTP_Body()。不是 Boolean 或 HTTP 狀態;空白或非空白都不能單獨證明成功。

專案原始碼: 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 的結果。

範例

檢查約定回覆

# 檢查約定回覆
#
# 使用 POST 將文字送到您的 HTTP 服務並傳回答覆。Telegram/Discord 仍需各自的協定及驗證支援。
#
# String:回應文字,同時存入 HTTP_Body()。不是 Boolean 或 HTTP 狀態;空白或非空白都不能單獨證明成功。

SUB Main()
    # 服務對 Route stopped 回覆 accepted;True 比對文字,不代表 HTTP 狀態碼。
    # example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

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

參數與執行說明:

  • 服務對 Route stopped 回覆 accepted;True 比對文字,不代表 HTTP 狀態碼。
  • example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

傳送結構化報告

# 傳送結構化報告
#
# 使用 POST 將文字送到您的 HTTP 服務並傳回答覆。Telegram/Discord 仍需各自的協定及驗證支援。
#
# String:回應文字,同時存入 HTTP_Body()。不是 Boolean 或 HTTP 狀態;空白或非空白都不能單獨證明成功。

SUB Main()
    # JsonStringify 會跳脫換行,但 Content-Type 仍是 text/plain。JSON 回覆傳回 status;缺少時為 unknown,錯誤時為 invalid
    # response。
    # example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

    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

參數與執行說明:

  • JsonStringify 會跳脫換行,但 Content-Type 仍是 text/plain。JSON 回覆傳回 status;缺少時為 unknown,錯誤時為 invalid response。
  • example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

保留第一個回應

# 保留第一個回應
#
# 使用 POST 將文字送到您的 HTTP 服務並傳回答覆。Telegram/Discord 仍需各自的協定及驗證支援。
#
# String:回應文字,同時存入 HTTP_Body()。不是 Boolean 或 HTTP 狀態;空白或非空白都不能單獨證明成功。

SUB Main()
    # firstReply/firstHeaders 保留 POST;後續 GET 只改變內部暫存。
    # example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

    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

參數與執行說明:

  • firstReply/firstHeaders 保留 POST;後續 GET 只改變內部暫存。
  • example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。

Clone this wiki locally