是否有任何gem以xml格式向某些服务发送请求

时间:2013-01-24 13:04:25

标签: ruby-on-rails xml web-services rest xml-serialization

我想在xml中向某些第三方服务发送请求,并期望在xml中响应。我正在寻找一些宝石或任何想法如何做到这一点。

我想到的是

  1. 制作一些_example.xml.builder

  2. 从我的视图中点击某个按钮向控制器操作发送ajax请求,并使用render_to_string呈现该xml doc然后

  3. 将其保存在某个变量中

  4. 然后在同一操作中调用该服务方法

  5. 但这并不恰当,因为我认为应该有一些比我建议的东西更有效的东西

1 个答案:

答案 0 :(得分:0)

RoR本身并不使用XML,因此需要进行一定程度的转换。

话虽如此,在RoR应用程序中,XML生成非常简单。有几种方法可以做到这一点,我最喜欢的是将所需数据构建为Hash(Ruby原生),然后是the_hash.to_xml。

如果希望得到一致的结果,也可以在模型类中定义XML转换:

class Example < ActiveRecord::Base

  # ensure that only column1, column2, etc are output as XML
  def to_xml(options = {})
    super( options.merge( select(:column1, :column2, etc) ) )
  end

end

然后在你的控制器中:

poster = Example.find(123)
request = Net::HTTP.new('www.example.com', 80)
request.post('/path', poster.to_xml)

希望上面演示了将XML数据发布到远程主机的简单示例。如前所述,可以使用xml.builder

构建更复杂的XML HTH祝你好运。