2010-01-24 3 views
25

Je suis nouveau à Ruby en provenance de Java. J'essaie de faire une requête HTTP get et je reçois un code de réponse http de 400. Le service que j'appelle sur http est très particulier et je suis à peu près sûr que ma requête n'est pas exactement correcte. Il serait utile de "regarder à l'intérieur" de l'objet req après avoir fait la demande de tête (ci-dessous) pour vérifier que les têtes de requête qui sont envoyées sont ce que je pense que j'envoie. Existe-t-il un moyen d'imprimer l'objet req?Comment puis-je imprimer des informations sur un NET: HTTPRequest à des fins de débogage?

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}" 

J'ai essayé ceci: puts "Request Debug: #{req.inspect}" mais il imprime seulement ceci: #<Net::HTTP www.blah.com:443 open=false>

Répondre

49

Utilisez set_debug_output.

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

Cela et plus http://github.com/augustl/net-http-cheat-sheet :)

+0

génial, merci. – Upgradingdave

+0

Lorsque j'utilise 'set_debug_output' avec des requêtes POST, il ne consigne pas le corps de la requête. Tout le reste est bon (en-têtes de requête, corps de réponse, en-têtes). Des idées comment le faire enregistrer dans le corps de la requête? – tikh