我可以在发送之前将完整的Ruby Net :: HTTP请求作为字符串引用吗?

时间:2012-05-21 07:02:15

标签: ruby http ruby-1.9.2 net-http

我在Ruby 1.9.2p290中使用Net::HTTP来处理一些显而易见的网络呼叫。

我现在需要查看发送到服务器的完整请求(作为一个符合HTTP 1.0 / 1.1的长字符串。

换句话说,我希望Net::HTTP能够处理生成符合HTTP标准的请求+正文的繁重工作,但我希望使用自定义传递机制发送字符串。

Net::HTTPRequest似乎没有任何有用的方法 - 我是否需要降低堆栈并劫持某些东西?

有没有人知道一个好的库,可能不是Net :: HTTP,可能有帮助吗?

编辑:我也想以相反的方式做同样的事情(将字符串响应转换为Net::HTTP::* - 虽然看起来我可能能够实例化{{1我自己?

1 个答案:

答案 0 :(得分:2)

请求:

post = Net::HTTP::Post.new('http://google.com')
post.set_form_data :query => 'ruby http'
sio = StringIO.new
post.exec si, Net::HTTP::HTTPVersion, post.path
puts sio.string

响应:

si = StringIO.new("HTTP/1.1 200 OK\n")
bio = Net::BufferedIO.new(si)
Net::HTTPResponse.read_new(bio)