我在使用实时网络服务器的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代码不等待返回值。 如果有人知道发生了什么或如何解决这个问题,我将非常感激。
此致 格伦
答案 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