-
Notifications
You must be signed in to change notification settings - Fork 0
API UO HTTP_Header 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 回應標頭,例如 Content-Type;不是內文、請求標頭或 HTTP 狀態碼。
UO.HTTP_Header() -> Any
沒有參數。
String:以 CRLF 分隔的「名稱: 值」,沒有 HTTP 狀態行。首次請求前或網路錯誤後為空;顺序與大小寫不保證,未提供獨立的狀態碼命令。
- 回應屬於此腳本的 runtime。其下一次 GET/POST 會取代回應,其他脚本不會影響它;不存入設定檔。要保留舊回應,先複製到變數。
- GET/POST 在腳本執行緒等待,請求與完整內文共用 20 秒期限。停止腳本會取消等待,Body/Header 不等待。即使使用 File,仍會先把全部內文載入記憶體。
- 依 charset 解碼;缺少或未知時使用 UTF-8,也會讀取 4xx/5xx 回應。網路錯誤或逾時會顯示錯誤並清空內文與標頭;Try/Catch 不能取代回應驗證。腳本取消會繼續傳遞,本機寫入或參數錯誤可被捕捉。
- Header 包含回應及內容標頭,二進位 GET 後亦可讀取。名稱比較不分大小寫;Content-Type 不驗證內容,不要把下載資料當程式碼執行。
這是客戶端的實作步驟,不是額外命令。GET/POST 呼叫 HttpRequest;Body/Header 只讀取所屬 runtime 的結果。
Header 包含回應及內容標頭,二進位 GET 後亦可讀取。名稱比較不分大小寫;Content-Type 不驗證內容,不要把下載資料當程式碼執行。
String:以 CRLF 分隔的「名稱: 值」,沒有 HTTP 狀態行。首次請求前或網路錯誤後為空;顺序與大小寫不保證,未提供獨立的狀態碼命令。
專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; 函式 ExecuteClientApiCompatibility.
這是客戶端的實作步驟,不是額外命令。GET/POST 呼叫 HttpRequest;Body/Header 只讀取所屬 runtime 的結果。
# 依名稱讀取 Content-Type
#
# 讀取此腳本最近的 HTTP 回應標頭,例如 Content-Type;不是內文、請求標頭或 HTTP 狀態碼。
#
# String:以 CRLF 分隔的「名稱: 值」,沒有 HTTP 狀態行。首次請求前或網路錯誤後為空;顺序與大小寫不保證,未提供獨立的狀態碼命令。
SUB Main()
# ReadHeader 在行首不分大小寫搜尋名稱並去除值兩側空白,找不到傳回空字串。
# example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。
UO.HTTP_Get("https://example.com/basic-status")
Return ReadHeader(UO.HTTP_Header(), "Content-Type")
END SUB
Function ReadHeader(headers, name)
Dim marker = Chr(13) & Chr(10) & LCase(name) & ":"
Dim text = Chr(13) & Chr(10) & headers & Chr(13) & Chr(10)
Dim start = InStr(1, LCase(text), marker)
If start = 0 Then
Return ""
End If
start += Len(marker)
Dim finish = InStr(start, text, Chr(13) & Chr(10))
Return Trim(Mid(text, start, finish - start))
End Function參數與執行說明:
- ReadHeader 在行首不分大小寫搜尋名稱並去除值兩側空白,找不到傳回空字串。
- example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。
# 搜尋 JSON 標記
#
# 讀取此腳本最近的 HTTP 回應標頭,例如 Content-Type;不是內文、請求標頭或 HTTP 狀態碼。
#
# String:以 CRLF 分隔的「名稱: 值」,沒有 HTTP 狀態行。首次請求前或網路錯誤後為空;顺序與大小寫不保證,未提供獨立的狀態碼命令。
SUB Main()
# 在所有標頭搜尋 application/json,傳回 Boolean,不是資料驗證。精確欄位用 ReadHeader,內容再用 JsonParse 檢查。
# example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。
UO.HTTP_Get("https://example.com/basic-status")
Dim headers = UO.HTTP_Header()
Return InStr(1, LCase(headers), "application/json") > 0
END SUB參數與執行說明:
- 在所有標頭搜尋 application/json,傳回 Boolean,不是資料驗證。精確欄位用 ReadHeader,內容再用 JsonParse 檢查。
- example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。
# 二進位下載的標頭
#
# 讀取此腳本最近的 HTTP 回應標頭,例如 Content-Type;不是內文、請求標頭或 HTTP 狀態碼。
#
# String:以 CRLF 分隔的「名稱: 值」,沒有 HTTP 狀態行。首次請求前或網路錯誤後為空;顺序與大小寫不保證,未提供獨立的狀態碼命令。
SUB Main()
# 串流不影響讀取標頭;內文在 data,HTTP_Body 為空。
# example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。
Dim data = MemoryStream()
Using data
UO.HTTP_Get("https://example.com/route-data.bin", data)
Dim headers = UO.HTTP_Header()
Return headers
End Using
END SUB參數與執行說明:
- 串流不影響讀取標頭;內文在 data,HTTP_Body 為空。
- example.com 未提供這些示範服務,請換成自己的 URL。執行會發出真正的 HTTP 請求,不會執行遊戲動作。
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь