【问题标题】:How can I print information about a NET:HTTPRequest for debug purposes?如何打印有关 NET:HTTPRequest 的信息以进行调试?
【发布时间】:2011-01-08 21:06:08
【问题描述】:

我是来自 Java 的 Ruby 新手。我正在尝试发出一个 http 获取请求,我得到一个 400 的 http 响应代码。我通过 http 调用的服务非常特殊,我很确定我的请求并不完全正确。在我执行头部请求(如下)以仔细检查正在发送的 request_headers 是否是我认为我正在发送的内容之后,“查看内部”req 对象会很有帮助。有没有办法打印出 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>

【问题讨论】:

    标签: ruby http https


    【解决方案1】:

    使用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 中的更多内容 :)

    【讨论】:

    • 当我将set_debug_output 与 POST 请求一起使用时,它不会记录请求正文。其他一切都很好(请求标头、响应正文、标头)。任何想法如何让它记录请求正文?
    • 请注意,这可能不安全:ruby-doc.org/stdlib-2.5.1/libdoc/net/http/rdoc/Net/… 声明:警告此方法会打开一个严重的安全漏洞。切勿在生产代码中使用此方法。
    【解决方案2】:

    如果您想查看和调试准确您的应用发送的内容,而不仅仅是查看其日志输出,我刚刚发布了一个开源工具来实现这一点:http://httptoolkit.tech/view/ruby/

    它支持几乎所有的 Ruby HTTP 库,因此它非常适合这种情况,但也支持许多其他工具和语言(Python、Node、Chrome、Firefox 等)。

    如另一个答案中所述,您可以配置 Net::HTTP 以打印其日志以了解其正在执行的操作,但这仅向您显示它正在尝试执行的操作,如果您使用任何其他 HTTP,它将无济于事库或工具(或使用模块),它需要您更改实际的应用程序代码(并记住将其更改回来)。

    使用 HTTP Toolkit,您只需单击一个按钮即可打开一个终端,从那里正常运行您的 Ruby 代码,然后自动收集发送的每个 HTTP 请求。

    【讨论】:

    • httptoolkit 甚至无法在 debian 中启动 - 只是默默地关闭。
    • @VoidVolker 这很不寻常!绝对支持 Debian。你能在github.com/httptoolkit/httptoolkit/issues/new 提交一个错误,并在那里包含任何终端输出吗?
    • 我的错,看起来它需要 root 和 flag 才能运行:sudo httptoolkit --no-sandbox
    • 仍然无法捕获来自 ruby​​ 的请求:rails 返回错误 RestClient::SSLCertificateNotVerified / self signed certificate in certificate chain
    • 通过破解 ruby​​ OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE Cloudinary.config.api_proxy = 'http://localhost:8003' / RestClient.proxy = 'http://localhost:8003' 并使用代理模式解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多