Подтвердить что ты не робот

Как я могу распечатать информацию об NET: HTTPRequest для целей отладки?

Я новичок в Ruby, пришедшем с Java. Я пытаюсь сделать запрос http get, и я получаю код ответа HTTP 400. Служба, которую я вызываю через 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>

4b9b3361

Ответ 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:)

Ответ 2

Если вы хотите увидеть и отладить именно то, что отправляет ваше приложение, а не просто посмотреть его вывод в журнал, я просто выпустил инструмент с открытым исходным кодом именно для этого: http://httptoolkit.tech/view/ruby/

Он поддерживает почти все библиотеки Ruby HTTP, поэтому он отлично подойдет для этого случая, а также многие другие инструменты и языки (Python, Node, Chrome, Firefox и т.д.).

Как отмечалось в другом ответе, вы можете настроить Net :: HTTP для печати своих журналов, чтобы выяснить, что он делает, но это только покажет вам, что он пытается сделать, это не поможет вам, если вы используете какие-либо другие HTTP-библиотеки или инструменты (или используйте модули, которые делают), и это требует, чтобы вы изменили свой фактический код приложения (и не забудьте изменить его обратно).

С помощью HTTP Toolkit вы можете просто нажать кнопку, чтобы открыть терминал, запустить код Ruby оттуда как обычно, и каждый отправленный HTTP-запрос будет собираться автоматически.