-
Notifications
You must be signed in to change notification settings - Fork 0
API UO HTTP_Get zh tw
Русский · 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 的結果。
無串流的 GET 保存文字與標頭;有串流則保存位元組與標頭並清空 HTTP_Body。空回應或網路錯誤也會清空串流。覆寫重要檔案前應先下載到記憶體並驗證。
Unit:沒有傳回值,不是 Boolean、ID 或位元組數。文字用 HTTP_Body(),二進位資料由串流讀取。
專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; 函式 ExecuteClientApiCompatibility.
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 請求,不會執行遊戲動作。
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь