Skip to content

API UO HTTP_Post ko

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