如何在Ruby中解析(不获取)HTTP请求
发布时间:2020-12-17 03:48:04 所属栏目:百科 来源:网络整理
导读:我有一个集成测试,它使用eventmachine来接收http请求.这是我的eventmachine处理程序: class NotificationRecipient EM::Connection def receive_data(data) EM.stop endend 我需要测试收到的请求的各种属性,例如我想从我收到的HTTP POST请求字符串中提取jso
我有一个集成测试,它使用eventmachine来接收http请求.这是我的eventmachine处理程序:
class NotificationRecipient < EM::Connection def receive_data(data) EM.stop end end 我需要测试收到的请求的各种属性,例如我想从我收到的HTTP POST请求字符串中提取json有效负载.有一个很好的包装方式吗? 谷歌搜索找到许多方式来发出请求并解析响应,例如rest-client将自动解析响应.但是,由于我收到了请求而没有收到请求,因此这些方法都不适用于我. 解决方法
我会使用WEBrick.
WEBrick::HTTPRequest 有一个可维护的解析器,你需要做的就是将一个IO对象传递给它的parse方法,你自己就可以操作一个对象.
此示例在字符串中声明带有JSON主体的POST请求,并使用StringIO使其可作为IO对象访问. require 'webrick' require 'stringio' Request = <<-HTTP POST /url/path HTTP/1.1 Host: my.hostname.com Content-Type: application/json Content-Length: 62 { "firstName": "John","lastName": "Smith","age": 25 } HTTP req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP) req.parse(StringIO.new(Request)) puts req.path req.each { |head| puts "#{head}: #{req[head]}" } puts req.body 产量 /url/path host: my.hostname.com content-type: application/json content-length: 62 { "firstName": "John","age": 25 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |