网络请求

此部分函数可以用于发起网络请求。

关于同步和异步

同步指的是在代码执行过程中,会等待网络请求完成才继续下一步,而异步是在发送网络请求之后直接开始往下执行,当请求完成了再调用回调函数来取得执行结果,您应该根据自己的业务需求选择同步或者异步。以下是同步和异步的例子:

同步请求:

local result = ZeroDream.Http.Sync({ url = "https://www.baidu.com/" })
print(result.data)
print("这句话会在显示完网页结果之后才出现")

异步请求:

ZeroDream.Http.Async({ url = "https://www.baidu.com/" }, function(result)
    print(result.data)
end)
print("这句话会显示在网页结果前面")

Http.Sync

函数作用:发起同步阻塞的网络请求
基本构造:ZeroDream.Http.Sync( config )
示例代码:

local result = ZeroDream.Http.Sync({
    url = "https://www.baidu.com/",
    method = "GET",
    headers = {
        ["Content-Type"] = "application/json",
    }
})
print(result.data)

Http.Async

函数作用:发起异步非阻塞的网络请求
基本构造:ZeroDream.Http.Async( config, callbackHandler )
示例代码:

ZeroDream.Http.Async({
    url = "https://www.baidu.com/",
    method = "GET",
    headers = {
        ["Content-Type"] = "application/json",
    }
}, function(result)
    print(result.data)
end)

Config 完整参数

以下是 config 的完整参数列表

config = {
    -- 请求地址
    url = "https://www.baidu.com/",
    -- 请求方式,提交表单一般是 POST
    method = "POST",
    -- 请求头,格式是 table
    headers = {
        ["Content-Type"] = "application/json",
        ["User-Agent"] = "FXServer/1.0",
    },
    -- 是否是 JSON 请求
    isJson = false,
    -- 请求内容,当 isJson 为 true 时,此处应传入字符串格式的数据,正常提交表单时此处应传入 table 格式的数据
    data = {
        key1 = "value1",
        key2 = "value2",
    }
}

请求响应内容

以下是请求返回的数据结构

response = {
    status = 200, -- 状态码
    data = "Hello World", -- 数据正文
    headers = { -- 响应头
        ["Content-Type"] = "application/json",
    },
    error = "" -- 请求失败时(状态码非 200)会返回错误信息
}