Lua / Corona SDK中的网络请求

时间:2012-02-13 01:07:10

标签: android iphone json lua corona

我在使用实时网络服务器的Corona SDK中获取network.request功能时遇到问题。它在我的本地主机上工作正常,但是当我更改代码与远程服务器通信时,应用程序返回零值。

这是我在.lua文件中使用的代码

local function networkListener( event )
    if ( event.isError ) then
        print( "Network error!")
    else
        print ( "RESPONSE: " .. event.response )
        local data = json.decode(event.response)
        responseText.text = data.result;
        messageText.text = data.message;
    end
end

------------------
--Send the request to the website to have the user Registered.
------------------
function AddUser (username, email, password, Device_Type, Device_ID)
        --Register Local
        network.request( "http://localhost/MobileApp/Register.php?loginid=" .. mime.b64(username) .. "&email=" .. mime.b64(email) .. "&password=" .. mime.b64(password) .. "&Device_Type=" .. mime.b64(Device_Type) .. "&Device_ID=" .. mime.b64(Device_ID), "GET", networkListener )
end

这是php服务器代码应以json数据的形式返回的内容:

    $result = array();
    $result["result"] = 200;
    $result["message"] = "Sucessfully Registered";
    echo json_encode($result);
    mysql_free_result($dbresult);
    exit;       

如果请求失败,则为此。

    $result = array();
    $result["result"] = 401;
    $result["message"] = "Please try another Username";
    echo json_encode($result);
    mysql_free_result($dbresult);
    exit;   

我已经从我的电脑直接将URL输入浏览器并获得预期结果

   {"result":200,"message":"Sucessfully Registered"}

所以我只能假设这是一个延迟问题,并且lua代码不等待返回值。 如果有人知道发生了什么或如何解决这个问题,我将非常感激。

此致 格伦

1 个答案:

答案 0 :(得分:0)

我最终通过绕过Corona进行下载并使用LUA代码来完成工作。我仍然使用Corona中的json解码器来解析json infor

以下是其他人有类似问题的代码:

local http = require("socket.http")
local json = require("json")


local URL = "http://localhost/MobileApp/Register.php?loginid=" .. mime.b64(username) .. "&email=" .. mime.b64(email) .. "&password=" .. mime.b64(password) .. "&Device_Type=" .. mime.b64(Device_Type) .. "&Device_ID=" .. mime.b64(Device_ID);
local response = http.request(URL)

if response == nil then
    print("No Dice")
else
    local data = json.decode(response)
    print(data.result);
    print(data.message);    
end