0
我知道图书馆的存在返回的HTTP响应为struct
S:返回原始二进制的IPv4 GET repsonse在灵药
> HTTPoison.get!("http://httpbin.org/get")
> %HTTPoison.Response{body: "{\n \"args\": {}, \n \"headers\": {\n \"Host\": \"httpbin.org\", \n \"User-Agent\": \"hackney/1.6.6\"\n }, \n \"origin\": \"86.30.176.31\", \n \"url\": \"http://httpbin.org/get\"\n}\n", headers: [{"Server", "nginx"}, {"Date", "Sun, 12 Mar 2017 06:05:29 GMT"},{"Content-Type", "application/json"}, {"Content-Length", "165"}, {"Connection", "keep-alive"}, {"Access-Control-Allow-Origin", "*"}, {"Access-Control-Allow-Credentials", "true"}], status_code: 200}
但是如何获取的原始binary
形式的IPv4的HTTP响应报文在灵药?
按Dogbert的建议下,我尝试使用gen_tcp
,但得到了以下内容:
iex(1)> {:ok, port} = :gen_tcp.connect('httpbin.org',80,[:binary, active:
false, packet: :http])
{:ok, #Port<0.6531>}
iex(2)> :gen_tcp.send(port, "GET /get HTTP/1.1\r\nHost: httpbin.org\r\n")
:ok
iex(3)> :gen_tcp.recv(port,0)
{:error, :closed}
什么我错在这里做什么?
如果请求的是一个简单的GET,你可以使用'gen_tcp'直接。如果它更复杂,我相信['hackney'](https://github.com/benoitc/hackney)必须有一个选项来获得原始响应,但我似乎无法找到它。 – Dogbert
如果仅仅是为了调试的目的,可能[Wireshark](https://www.wireshark.org/)会是一个很好的通用选项吗? –
@PatrickOscity - 尝试过,但是我正在寻找一些我可以在elixir中重现的东西。 – category