HttpService

HTTP 요청을 보내는 기능을 제공합니다.

# Properties

[{"index":"boolean httpEnabled","0":"http:\/\/ 프로토콜을 허용합니다. 기본값은 false이며 출시 게임에서는 https:\/\/ 프로토콜을 사용할 것을 권장합니다."}]

# Methods

[{"index":"string GetAndWait(string url, Dictionary headers = nil) (ServerOnly) (Yield)","0":"HTTP Get 요청을 보내고 application\/json 응답을 받아옵니다. 헤더에 담을 데이터는 key - value 형태의 테이블로 만들어 headers로 전달합니다."}]

[{"index":"table JSONDecode(string input)","0":"Json 문자열을 Lua 테이블로 변환합니다."}]

[{"index":"string JSONEncode(table input)","0":"Lua 테이블을 Json 문자열로 변환합니다."}]

[{"index":"string PostAndWait(string url, string content, HttpContentType contentType = HttpContentType.ApplicationJson, Dictionary headers = nil) (ServerOnly) (Yield)","0":"HTTP Post 요청을 보내고 응답을 받아옵니다. content의 형식은 application\/json, application\/x-www-form-urlencoded, plain\/text를 지원합니다. 헤더에 담을 데이터는 key - value 형태의 테이블로 만들어 headers로 전달합니다."}]

[{"index":"string RequestAndWait(string url, string httpMethod = nil, string content = nil, Dictionary headers = nil) (ServerOnly) (Yield)","0":"HTTP 요청을 보내고 응답을 받아옵니다. httpMethod는 get, post, put, delete, head를 지원합니다. content의 형식은 반드시 headers에 명시해야 합니다."}]

[{"index":"string UrlEncode(string input)","0":"Url에 포함된 한글, 공백, 특수문자 등을 이스케이프 문자로 치환합니다."}]

##### inherited from Service:

[{"index":"EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"boolean DisconnectEvent(string key, EventHandlerBase eventHandler)","0":"타입의 이름이 key인 이벤트와 핸들러와의 이벤트 연결을 끊습니다."}]

[{"index":"boolean DisconnectEvent(Type eventType, EventHandlerBase eventHandler)","0":"타입이 eventType인 이벤트와 핸들러와의 연결을 끊습니다."}]

[{"index":"void SendEvent(EventType sendEvent)","0":"이벤트를 발생시킵니다."}]

# 유의 사항

  1. HttpMethod Get/Post만 지원합니다.

  2. PostAsync 전송 타입(HttpContentType)은 3가지입니다.

     * application/json
     * application/x-www-urlencoded
     * text/plain
  3. 분당 최대 120회의 Http요청으로 제한합니다. 초과할 경우 30초간 HttpService요청이 불가능합니다.

  4. 각 요청당 Timeout은 30초입니다.

  5. Tls1.2 이상만 지원합니다. Tls1.0, Tls1.1의 경우 통신 시도를 하면 오류가 발생합니다.

  6. 80, 443을 제외한 1024 미만 포트에서는 사용이 제한됩니다. (＜1024) MSW 임베디드 서버 지정 대역은 30011 ~ 30019입니다.

  7. 응답 버퍼는 10MB로 제한합니다.




# Examples

Http 요청을 보내고, 응답을 받는 예제입니다.
    
    
    @Component
    script HttpClient extends Component
        @ExecSpace("ServerOnly")
        method void GetAndWait()
        local headers = {["header1"] = "value1", ["header2"] = "value2"}
        local response = _HttpService:GetAndWait("Http://WebUrl", headers)
    
        log(response)
        end
    
        @ExecSpace("ServerOnly")
        method void PostAndWait()
        local headers = {["header1"] = "value1", ["header2"] = "value2"}
        local content = {["id"] = "msw123", ["password"] = "abcd1234"}
        local contentJson = _HttpService:JSONEncode(content)
        local response = _HttpService:PostAndWait("Http://WebUrl", contentJson, HttpContentType.ApplicationJson, headers)
    
        log(response)
        end
    
        @ExecSpace("ServerOnly")
        method void RequestAndWai()
        -- 반드시 헤더에 content-type이 포함되어 있어야 합니다.
        local headers = {["content-type"] = "application/json", ["header1"] = "value1", ["header2"] = "value2"}
        local content = {["id"] = "msw123", ["password"] = "abcd1234"}
        local contentJson = _HttpService:JSONEncode(content)
        local response = _HttpService:RequestAndWait("Http://WebUrl", "POST", contentJson, headers)
    
        log(response)
        end
    end