Files
chuanqi-server/server/s1/LogicServer/data/functions/AsyncWork/GetHttpContent.lua
aixianling 06658f112f init
2024-12-13 13:41:02 +08:00

131 lines
4.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local addr = {}
local GHC_SUCCESS = 0
local GHC_ErrCreateSocket = -1
local GHC_ErrConnet = -2
local GHC_ErrSend = -3
local GHC_ErrRecv = -4
_G.GetHttpContent = function(host, port, url)
if host == nil or port == nil or url == nil then
return "", -100
end
--print("[GetHttpContent++++++++++++++++++++++++++++++++++++++++111++++++++++++++++:"..tostring(host) )
--print("[GetHttpContent++++++++++++++++++++++++++++++++++++++++222++++++++++++++++:"..tostring(port) )
--print("[GetHttpContent++++++++++++++++++++++++++++++++++++++++333++++++++++++++++:"..tostring(url) )
local socket = LuaSocket:NewSocket()
if socket == nil then
print("create socket error!".. host)
return "", GHC_ErrCreateSocket
end
if addr[host] == nil then
-- GetHostByName在linux中不是线程安全的所以这里只获取一次便保存下来下次不需要再调用
addr[host] = LuaSocket:GetHostByName(host)
end
local ret = socket:connect2(addr[host], port, 3)
if ret ~= 0 then
LuaSocket:Release(socket, 1)
print(string.format("connect to host error:%s:%d, ret:%d", host, port, ret))
return "", GHC_ErrConnet
end
socket:setSendTimeout(3)
socket:setRecvTimeout(3)
local str = string.format("GET %s HTTP/1.0\r\nHost:%s\r\n\r\n", url, host)
-- print("GetContent send")
-- print(str)
ret = socket:send(str)
if ret <= 0 then
LuaSocket:Release(socket, 2)
print(string.format("send to host error:%s:%d", host, port))
return "", GHC_ErrSend
end
--print("[GetHttpContent++++++++++++++++++++++++++++6564546++++++++++:"..tostring(str) )
local content = ""
local len = 0
content, len = socket:readall(len)
if len <= 0 then
LuaSocket:Release(socket, 3)
print(string.format("recv content error:%s:%d", host, port))
return "", GHC_ErrRecv
end
local _, es = string.find(content, "\r\n\r\n")
if es ~= nil then
content = string.sub(content, es + 1)
end
-- print("GetContent recv")
-- print(content)
LuaSocket:Release(socket, 4)
--print("[GetHttpContent----------------------------------------------:"..tostring(content) )
return content, GHC_SUCCESS
end
_G.PostHttpContent2 = function(host, port, url)
if host == nil or port == nil or url == nil then
--print("[PostHttpContent2++++++++++++++++++++some nill:")
return "", -100
end
mgs = url;
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------2:"..tostring(mgs) )
--print("[PostHttpContent2++++++++++++++++++++++++++++++++++--------------1:"..tostring(url) )
local socket = LuaSocket:NewSocket()
if socket == nil then
print("create socket error!".. host)
return "", GHC_ErrCreateSocket
end
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------3:"..tostring(mgs) )
if addr[host] == nil then
-- GetHostByName在linux中不是线程安全的所以这里只获取一次便保存下来下次不需要再调用
addr[host] = LuaSocket:GetHostByName(host)
end
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------4:"..tostring(mgs) )
local ret = socket:connect2(addr[host], port, 3)
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------5:"..tostring(mgs) )
if ret ~= 0 then
LuaSocket:Release(socket, 1)
print(string.format("connect to host error:%s:%d, ret:%d", host, port, ret))
return "", GHC_ErrConnet
end
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------6:"..tostring(mgs) )
socket:setSendTimeout(3)
socket:setRecvTimeout(3)
local str = mgs--string.format("POST %s HTTP/1.0\r\nHost: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\n%s", url, host, string.len(mgs), mgs)
-- print("GetContent send")
-- print(str)
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------7:"..tostring(str) )
ret = socket:send(str)
if ret <= 0 then
LuaSocket:Release(socket, 2)
print(string.format("send to host error:%s:%d", host, 80))
return "", GHC_ErrSend
end
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------8:"..tostring(str) )
local content = ""
local len = 0
content, len = socket:readall(len)
if len <= 0 then
LuaSocket:Release(socket, 3)
print(string.format("recv content error:%s:%d", host, port))
return "", GHC_ErrRecv
end
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------9:"..tostring(str) )
local _, es = string.find(content, "\r\n\r\n")
if es ~= nil then
content = string.sub(content, es + 1)
end
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------10:"..tostring(mgs) )
-- print("GetContent recv")
-- print(content)
LuaSocket:Release(socket, 4)
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------11:"..tostring(str) )
--print("[GetHttpContent----------------------------------------------:"..tostring(content) )
return content, GHC_SUCCESS
end