Skip to content

API UO HTTP_Post ja

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

自分の HTTP サービスへ POST で文字列を送り、応答を返します。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 内の結果を読むだけです。

使用例

取り決めた応答を確認

# 取り決めた応答を確認
#
# 自分の HTTP サービスへ POST で文字列を送り、応答を返します。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 要求が発生しますが、ゲーム操作はありません。

構造化した報告

# 構造化した報告
#
# 自分の HTTP サービスへ POST で文字列を送り、応答を返します。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 要求が発生しますが、ゲーム操作はありません。

最初の応答を保持

# 最初の応答を保持
#
# 自分の HTTP サービスへ POST で文字列を送り、応答を返します。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