概要
基于 luajava 简易封装的异步请求库
表结构
默认支持
GET
请求方式
-- kox.lua
local kox = {
_URL = nil,
_DATA = nil,
SomeThing = {},
_COOKIES = nil,
_METHOD = "get",
_ChARSET = nil,
_HEADERS = {
["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69"
}
}
请求定义
---设置请求地址
---@param fetchUrl string
---@return table
function kox:setUrl(fetchUrl)
if self._URL == nil then
self._URL = fetchUrl
end
return self
end
--- 增加请求头
---@param key string
---@param value string
function kox:setHeaders(key, value, ...)
local op = { ... }
self._HEADERS[string.lower(key)] = value
if #op > 0 then
for k, v in pairs(op) do
self._HEADERS[string.lower(tostring(k))] = v
end
end
return self
end
--- 设置请求模式
---@param method string
function kox:setMethod(method)
self._METHOD = string.lower(method)
return self
end
--- 增加参数
---@param data string
function kox:setData(data)
self._DATA = data
return self
end
发送定义
使用
xpcall
来接收成功和失败的回调
--- 发送请求
---@param callBack function
function kox:send(callBack, errorBack)
xpcall(function()
if self._METHOD == "get" then
Http.get(self._URL, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
elseif self._METHOD == "post" then
Http.post(self._URL, self._DATA, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
end
end, errorBack)
return self
end
-- 默认传递参数
function kox.Err(err)
--log:debug(err)
print(err)
end
使用示例
require "import"
import "cjson"
-- 调用示例
function success(code, resp)
if code == 200 then
print(resp)
end
end
local params = cjson.encode({
"username": "admin",
"password": "xxxxx",
})
-- 导入必须库
local Request = import "kox"
Request:setUrl("https://cccc.xxx")
Request:setMethod("Post")
Request:setData(params)
Request:setHeaders("Content-Type", "application/x-www-form-urlencoded") -- 设置请求头
Request:send(success, Request.Err) -- 发送请求
完整代码
-- kox.lua
local kox = {
_URL = nil,
_DATA = nil,
SomeThing = {},
_COOKIES = nil,
_METHOD = "get",
_ChARSET = nil,
_HEADERS = {
["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69"
}
}
---设置请求地址
---@param fetchUrl string
---@return table
function kox:setUrl(fetchUrl)
if self._URL == nil then
self._URL = fetchUrl
end
return self
end
--- 增加请求头
---@param key string
---@param value string
function kox:setHeaders(key, value, ...)
local op = { ... }
self._HEADERS[string.lower(key)] = value
if #op > 0 then
for k, v in pairs(op) do
self._HEADERS[string.lower(tostring(k))] = v
end
end
return self
end
--- 设置请求模式
---@param method string
function kox:setMethod(method)
self._METHOD = string.lower(method)
return self
end
--- 增加参数
---@param data string
function kox:setData(data)
self._DATA = data
return self
end
--- 发送请求
---@param callBack function
function kox:send(callBack, errorBack)
xpcall(function()
if self._METHOD == "get" then
Http.get(self._URL, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
elseif self._METHOD == "post" then
Http.post(self._URL, self._DATA, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
end
end, errorBack)
return self
end
-- 默认传递参数
function kox.Err(err)
print(err)
end
return kox