我是来自Java的Ruby的新手。我正在尝试发出一个http get请求,我得到一个400的http响应代码。我通过http调用的服务非常特别,我很确定我的请求不完全正确。在我执行头部请求(下面)之后“查看”req
对象是有帮助的,以便仔细检查正在发送的request_headers是我认为我发送的内容。有没有办法打印出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>
答案 0 :(得分:60)
使用set_debug_output
。
http = Net::HTTP.new(url.host, url.port)
http.set_debug_output($stdout) # Logger.new("foo.log") works too
答案 1 :(得分:0)
如果您想准确地查看和调试应用程序正在发送的内容,而不只是查看其日志输出,我刚刚发布了一个开源工具,用于此目的:http://httptoolkit.tech/view/ruby/
它支持几乎所有的Ruby HTTP库,因此在这种情况下可以完美运行,而且还可以使用许多其他工具和语言(Python,Node,Chrome,Firefox等)。
如另一个答案中所述,您可以配置Net :: HTTP来打印其日志以了解其正在执行的操作,但这仅显示您正在尝试执行的操作,如果您使用任何其他HTTP则无济于事库或工具(或使用具有此功能的模块),并且它要求您更改实际的应用程序代码(并记住将其更改回去)。
使用HTTP工具包,您只需单击一个按钮即可打开终端,从那里正常运行Ruby代码,发送的每个HTTP请求都会自动收集。