Lua http оценка сокета - PullRequest
       17

Lua http оценка сокета

1 голос
/ 16 мая 2011

Я использую lua 5.1 и luaSocket 2.0.2-4 для получения страницы с веб-сервера.Сначала я проверяю, отвечает ли сервер, а затем назначаю ответ веб-сервера переменным lua.

local mysocket = require("socket.http")
if mysocket.request(URL) == nil then
    print('The server is unreachable on:\n'..URL)
    return
end
local response, httpCode, header = mysocket.request(URL)

Все работает, как и ожидалось, но запрос выполняется два раза.Интересно, могу ли я сделать что-то вроде (что, очевидно, не работает):

local mysocket = require("socket.http")
if (local response, httpCode, header = mysocket.request(URL)) == nil then
    print('The server is unreachable on:\n'..URL)
    return
end

Ответы [ 2 ]

5 голосов
/ 16 мая 2011

Да, как-то так:

local mysocket = require("socket.http")
local response, httpCode, header = mysocket.request(URL)

if response == nil then
    print('The server is unreachable on:\n'..URL)
    return
end

-- here you do your stuff that's supposed to happen when request worked

Запрос будет отправлен только один раз, и в случае сбоя функция завершится.

1 голос
/ 16 мая 2011

Еще лучше, когда запрос не выполняется, причина второго возврата:

В случае сбоя функция возвращает nil с последующим сообщением об ошибке.

документация для http.request )

Таким образом, вы можете распечатать проблему прямо из уста сокета:

local http = require("socket.http")
local response, httpCode, header = http.request(URL)

if response == nil then
    -- the httpCode variable contains the error message instead
    print(httpCode)
    return
end

-- here you do your stuff that's supposed to happen when request worked
...