Getting a glimpse into Net::HTTP requests
While trying to debug some HTTP code, I wanted to be able to see what the actual HTTP request looked before it was sent. So, I added a #to_s
method:
require 'stringio'
class Net::HTTPGenericRequest
def to_s
io = StringIO.new
exec(io, '1.1', path)
io.string
end
end
All the built in requests extend HTTPGenericRequest
, so now I can call #to_s
on any request:
request = request = Net::HTTP::Get.new('/some/path')
request.set_content_type 'text/html'
request.basic_auth 'username', 'password'
puts request.to_s
Which gives me:
GET /some/path HTTP/1.1
Accept: */*
Content-Type: text/html
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
I had also intended to add a #to_s
method to the response, but it wasn’t obvious how to accomplish that, and I found my bug before I needed it. So, if anyone feels ambitious…
This content is open source.
Suggest Improvements.