Как я могу распечатать информацию о NET: HTTPRequest для целей отладки? - PullRequest
33 голосов
/ 24 января 2010

Я новичок в Ruby с Java. Я пытаюсь сделать запрос http get и получаю код ответа http 400. Сервис, который я вызываю по http, очень специфичен, и я почти уверен, что мой запрос не совсем правильный. Было бы полезно "заглянуть внутрь" объекта req после того, как я выполню запрос head (ниже), чтобы дважды проверить, что отправляемые 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>

Ответы [ 2 ]

61 голосов
/ 24 января 2010

Использование 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:)

0 голосов
/ 03 июля 2019

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...