2010-01-24 7 views
25

Sono nuovo di Ruby proveniente da Java. Sto cercando di fare una richiesta di http e sto ricevendo un codice di risposta http di 400. Il servizio che sto chiamando su http è molto particolare e sono abbastanza sicuro che la mia richiesta non sia esattamente corretta. Sarebbe utile "guardare dentro" l'oggetto req dopo aver fatto la richiesta principale (sotto) per ricontrollare che i request_headers che vengono inviati siano quelli che penso di inviare. C'è un modo per stampare l'oggetto req?Come posso stampare informazioni su un NET: HTTPRequest a scopo di debug?

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

ho provato questo: puts "Request Debug: #{req.inspect}" ma esso stampa solo: #<Net::HTTP www.blah.com:443 open=false>

risposta

49

Usa set_debug_output.

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

Quello e più in http://github.com/augustl/net-http-cheat-sheet :)

+0

impressionante, grazie. – Upgradingdave

+0

Quando uso 'set_debug_output' con le richieste POST, non registra il corpo della richiesta. Tutto il resto va bene (richieste intestazioni, corpo della risposta, intestazioni). Qualche idea su come farlo registrare il corpo della richiesta? – tikh