you can set host in httpc header

This commit is contained in:
Cloud Wu
2015-03-30 09:29:22 +08:00
parent a9b1993686
commit 36ed8679b8
2 changed files with 17 additions and 4 deletions

View File

@@ -14,10 +14,15 @@ local function request(fd, method, host, url, recvheader, header, content)
for k,v in pairs(header) do
header_content = string.format("%s%s:%s\r\n", header_content, k, v)
end
if header.host then
host = ""
end
else
host = string.format("host:%s\r\n",host)
end
if content then
local data = string.format("%s %s HTTP/1.1\r\nhost:%s\r\ncontent-length:%d\r\n%s\r\n%s", method, url, host, #content, header_content, content)
local data = string.format("%s %s HTTP/1.1\r\n%scontent-length:%d\r\n%s\r\n%s", method, url, host, #content, header_content, content)
write(data)
else
local request_header = string.format("%s %s HTTP/1.1\r\nhost:%s\r\ncontent-length:0\r\n%s\r\n", method, url, host, header_content)

View File

@@ -1,16 +1,24 @@
local skynet = require "skynet"
local httpc = require "http.httpc"
local dns = require "dns"
skynet.start(function()
print("GET baidu.com")
local header = {}
local status, body = httpc.get("baidu.com", "/", header)
local respheader = {}
local status, body = httpc.get("baidu.com", "/", respheader)
print("[header] =====>")
for k,v in pairs(header) do
for k,v in pairs(respheader) do
print(k,v)
end
print("[body] =====>", status)
print(body)
local respheader = {}
dns.server()
local ip = dns.resolve "baidu.com"
print(string.format("GET %s (baidu.com)", ip))
local status, body = httpc.get("baidu.com", "/", respheader, { host = "baidu.com" })
print(status)
skynet.exit()
end)