Skip to content

API UO HTTP_Post uk

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:// URL. Використовується мережа процесу, а не ігровий проксі профілю. З’єднання з грою не потрібне.
  • PostData — Обов’язковий текст тіла: UTF-8, Content-Type: text/plain; charset=utf-8. Автоматичного кодування форми чи application/json немає. JsonStringify створює лише текст; ваш сервіс має приймати JSON як text/plain. Довільні заголовки не налаштовуються.

Повертає

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 екранує новий рядок. Тип залишається 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 екранує новий рядок. Тип залишається 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