2013-03-16 2 views
4

사용자를 인증하기 위해 루아의 서버와 통신하려고합니다.루아 socket.http 싱크 매개 변수

function http.send(url) 
    local req = require("socket.http") 
    local b, c, h = req.request{ 
     url = url, 
     redirect = true 
    } 
    return b 
end 

그러나, 나는 내가 sink 매개 변수를 제공하지 않았기 때문에 데이터가 삭제됩니다 것으로 나타났습니다 :이처럼 내 요청 기능이 모습입니다. 다운로드 한 데이터를 파일/테이블로 다운로드하지 않고 전체 문자열로 반환 할 수 있기를 원합니다. 나는 이것에 대해 어떻게 갈 것인가?

답변

6

ltn12.sink.table을 사용하면 주어진 테이블에 결과를 수집 할 수 있습니다. 그런 다음 table.concat을 사용하여 결과 문자열을 얻을 수 있습니다.

-- load needed modules 
local http = require("socket.http") 
local ltn12 = require("ltn12") 

-- a simplified http.get function 
function http.get(u) 
    local t = {} 
    local status, code, headers = http.request{ 
    url = u, 
    sink = ltn12.sink.table(t) 
    } 
    return table.concat(t), headers, code 
end 
: ltn12.sink의 문서에서 사용