问题 如何查看HTTPoison的原始请求


我正在尝试使用HTTPoison提交此表单

https://gist.github.com/shankardevy/6728d63eb528b3cb223a

使用以下代码:

HTTPoison.post!(url,{:multipart, [{"username", "user"}, {"password", "pass"}]})

但是,结果页面提供“无效身份验证”。但是当我尝试使用浏览器使用相同的凭据登录时,它可以工作。

所以我想知道我是否能看到HTTPoison的原始http请求,以便我可以将它与来自浏览器的原始请求进行比较。


10757
2017-07-01 11:10


起源



答案:


如果您只是想查看请求,请访问 http://httpbin.org?它回应了所要求的信息。

iex(1)> IO.puts HTTPoison.post!("http://httpbin.org/post",{:multipart, [{"username", "user"}, {"password", "pass"}]}).body

HTTPoison 使用 hackney 作为后端,我有使用的文件上传示例 hackney 在下面(尽管它与你的例子有些不同,我发布它作为你的参考,因为我以前努力寻找关于multipart的例子)。

https://github.com/parroty/excoveralls/blob/master/lib/excoveralls/poster.ex

是否有任何特殊原因使用multipart来发送用户/密码参数?


9
2017-07-01 15:29



谢谢@parroty。我根据你的建议尝试使用 :hackney 和 HTTPoison 但是响应说我的凭据在浏览器工作正常时是错误的。所以我希望实际看到HTTPoison的原始请求,而不是json格式化的httpbin对debug的响应。另一方面,我无法控制更改表单,因此必须使用“multipart”请求,因为这是远程服务器所期望的。 - shankardevy
抱歉,我不知道原始请求部分的答案,但是如果你想将它与浏览器进行比较,可能更容易编写一个简单的本地服务器来接收来自双方的请求,而不是分析原始请求(如通过数据包捕获等)。以防万一,表格中的“uri”参数也是指定的? - parroty
谢谢。拥有本地服务器是个好主意。 - shankardevy


答案:


如果您只是想查看请求,请访问 http://httpbin.org?它回应了所要求的信息。

iex(1)> IO.puts HTTPoison.post!("http://httpbin.org/post",{:multipart, [{"username", "user"}, {"password", "pass"}]}).body

HTTPoison 使用 hackney 作为后端,我有使用的文件上传示例 hackney 在下面(尽管它与你的例子有些不同,我发布它作为你的参考,因为我以前努力寻找关于multipart的例子)。

https://github.com/parroty/excoveralls/blob/master/lib/excoveralls/poster.ex

是否有任何特殊原因使用multipart来发送用户/密码参数?


9
2017-07-01 15:29



谢谢@parroty。我根据你的建议尝试使用 :hackney 和 HTTPoison 但是响应说我的凭据在浏览器工作正常时是错误的。所以我希望实际看到HTTPoison的原始请求,而不是json格式化的httpbin对debug的响应。另一方面,我无法控制更改表单,因此必须使用“multipart”请求,因为这是远程服务器所期望的。 - shankardevy
抱歉,我不知道原始请求部分的答案,但是如果你想将它与浏览器进行比较,可能更容易编写一个简单的本地服务器来接收来自双方的请求,而不是分析原始请求(如通过数据包捕获等)。以防万一,表格中的“uri”参数也是指定的? - parroty
谢谢。拥有本地服务器是个好主意。 - shankardevy


你可以使用真棒 ngrok 用于为您的请求创建代理的工具,例如

$ ngrok example.com 8080

会吐出像这样的网址 http://abcd1234.ngrok.com 代理发送给example.com端口8080的任何请求。然后,您可以在ngrok的Web监控UI中检查原始请求, HTTP://本地主机:4040。不用说,您将把所有数据发送给第三方,因此不要提交任何您不想泄露的用户名和密码。


2
2017-08-16 18:48