我是LUA编程的新手,有第一个问题:
我尝试发出一个http.get请求,并希望将内容传递给一个变量。下面是我的代码:
local API_KEY = ""
function getAPIKey()
local key
http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
function(code, data)
if(code < 0) then
print("HTTP request failed")
else
key = data
end
end)
print(key)
end当我尝试这段代码时,我会得到一个错误,因为变量API_KEY是nil。
有谁有什么想法吗?
发布于 2018-02-20 11:54:07
也许问题1:您没有收集http.get()返回的主体,因此打印了一个空的局部变量。
也许问题2:API_KEY没有在你的代码中使用,所以它不会对任何东西产生任何影响。然而,将其设置为全局的API_KEY = "" (删除本地)可能会对已经加载的某个库产生影响-在本例中,无论您从中获取http.get的库是什么。如果是这种情况,您可能需要查阅文档/从API获取API密钥(通常用于防止任何人使用API)。
也许问题3:我有一个顾虑,那就是匿名函数中的code < 0。通常,http会返回一个code > 0 (无符号):200表示OK,404表示未找到,403表示禁止,300中的任何内容都与重定向有关,这可能需要您做更多的工作。有关http代码参考,请参阅this wiki。也许通过该函数返回的数据实际上是预期的数据。如果是这种情况(您将从错误代码中了解),那么我将删除print(data)的key = data。
可能的解决方案1:
- local API_KEY = ""
+ API_KEY = ""可能的解决方案2:
function getAPIKey()
- local key
- http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
+ local key = http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
function(code, data)
if(code < 0) then
print("HTTP request failed")
else
key = data
end
end)
print(key)
end调试解决方案1:
function getAPIKey()
local key
http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
local key = http.get(SERVER_URL .. "?query=getapikey&mac=" .. wifi.ap.getmac(),
function(code, data)
if(code < 0) then
- print("HTTP request failed")
+ print("HTTP request failed!", "`" .. code .. "`")
+ print("data:", "`" .. data .. "`")
else
+ print(code, "`" .. data .. "`")
key = data
end
end)
print(key)
endhttps://stackoverflow.com/questions/48875841
复制相似问题