diff --git a/lualib/http/httpc.lua b/lualib/http/httpc.lua index a73d5710..823d33b5 100644 --- a/lualib/http/httpc.lua +++ b/lualib/http/httpc.lua @@ -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) diff --git a/test/testhttp.lua b/test/testhttp.lua index 9fd0804c..cba1488a 100644 --- a/test/testhttp.lua +++ b/test/testhttp.lua @@ -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)