Сетевой запрос в Lua / Corona SDK - PullRequest
       14

Сетевой запрос в Lua / Corona SDK

0 голосов
/ 13 февраля 2012

У меня проблемы с получением функции network.request в Corona SDK, работающей с живым веб-сервером. На моем локальном хосте все работает нормально, но в тот момент, когда я изменяю код для связи с удаленным сервером, приложение возвращает нулевое значение.

Это код, который я использую в файле .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 не ожидает возвращаемого значения. Если кто-нибудь знает, что происходит или как решить эту проблему, я был бы очень признателен.

С уважением Glen

1 Ответ

0 голосов
/ 14 февраля 2012

Я закончил тем, что начал работать, обходя Corona для загрузки и просто используя код LUA.Я до сих пор использую json-декодер в Corona для анализа 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
...