首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LUA -从回调中获取变量

LUA -从回调中获取变量
EN

Stack Overflow用户
提问于 2018-02-20 07:43:57
回答 1查看 313关注 0票数 2

我是LUA编程的新手,有第一个问题:

我尝试发出一个http.get请求,并希望将内容传递给一个变量。下面是我的代码:

代码语言:javascript
复制
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_KEYnil

有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 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:

代码语言:javascript
复制
-    local API_KEY = ""
+    API_KEY = ""

可能的解决方案2:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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)
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48875841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档