ruby 如何打印有关NET:HTTP请求的信息以用于调试目的?

kiayqfof  于 2023-05-17  发布在  Ruby
关注(0)|答案(2)|浏览(107)

我是从Java来的Ruby新手。我试图发出一个http get请求,得到的http响应代码为400。我通过http调用的服务非常特殊,我很确定我的请求并不完全正确。在我执行head请求(如下)之后,“查看”req对象的内部会很有帮助,可以仔细检查正在发送的request_header是否是我认为我正在发送的。有没有办法打印出req对象?

req = Net::HTTP.new(url.host, url.port)
req.use_ssl = true

res = req.head(pathWithScope, request_headers)

code = res.code.to_i
puts "Response code: #{code}"

我试过这个:puts "Request Debug: #{req.inspect}",但它只打印以下内容:#<Net::HTTP www.blah.com:443 open=false>

dauxcl2d

dauxcl2d1#

使用set_debug_output

http = Net::HTTP.new(url.host, url.port)
http.set_debug_output($stdout) # Logger.new("foo.log") works too

http://github.com/augustl/net-http-cheat-sheet中的这些和更多:)

polhcujo

polhcujo2#

如果你想看到& debug * 确切 * 你的应用正在发送什么,而不仅仅是看到它的日志输出,我刚刚发布了一个开源工具:http://httptoolkit.tech/view/ruby/
它支持几乎所有的Ruby HTTP库,因此它可以完美地工作在这种情况下,但也支持许多其他工具和语言(Python,Node,Chrome,Firefox等)。
正如在另一个答案中所指出的,你可以配置Net::HTTP打印它的日志来确定它在做什么,但这只能显示它试图做什么,如果你使用任何其他HTTP库或工具(或使用模块),它不会帮助你,它需要你改变你的实际应用程序代码(并记住将其更改回来)。
使用HTTP Toolkit,您只需单击一个按钮即可打开一个终端,从那里正常运行Ruby代码,并自动收集发送的每个HTTP请求。

相关问题