使用 lua 发送 Get 到网站

Gml*_*yra 4 lua luasocket

我在使用 lua 时遇到了麻烦。

我需要通过 GET 向网站发送请求并从网站获取响应。

Atm 我只有这个:

local LuaSocket = require("socket")
client = LuaSocket.connect("example.com", 80)
client:send("GET /login.php?login=admin&pass=admin HTTP/1.0\r\n\r\n")
while true do
  s, status, partial = client:receive('*a')
  print(s or partial)
  if status == "closed" then 
    break 
  end
end
client:close()
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能得到服务器的响应?

我想向这个网站发送一些信息并获得页面的结果。

有任何想法吗 ?

Pau*_*nko 6

*a在连接关闭之前,这可能不会像读取一样工作,但在这种情况下,客户端不知道要读取多少。您需要做的是逐行读取并解析标头以找到 Content-Length,然后在看到两行结束后读取指定的字节数(如 Content-Length 中设置的)。

而不是自己做这一切(读取和解析头,处理重定向,100 继续,等等),socket.http将为您处理所有这些复杂性。尝试这样的事情:

local http = require("socket.http")
local body, code, headers, status = http.request("https://www.google.com")
print(code, status, #body)
Run Code Online (Sandbox Code Playgroud)


Gml*_*yra 5

我解决了传递标题的问题

local LuaSocket = require("socket")
client = LuaSocket.connect("example.com", 80)
client:send("GET /login.php?login=admin&pass=admin HTTP/1.0\r\nHost: example.com\r\n\r\n")
while true do
  s, status, partial = client:receive('*a')
  print(s or partial)
  if status == "closed" then 
    break 
  end
end
client:close()
Run Code Online (Sandbox Code Playgroud)