【问题标题】:Is there any gem to send request to some service in xml format是否有任何 gem 可以以 xml 格式向某些服务发送请求
【发布时间】:2013-01-24 13:04:24
【问题描述】:
我想在 xml 中向某些第三方服务发送请求,并希望在 xml 中得到响应。我正在寻找一些宝石或任何想法如何做到这一点。
我的想法是
做一些parttail _example.xml.builder
onclick 从我的视图到某个按钮向控制器操作发送 ajax 请求并使用 render_to_string 呈现该 xml 文档,然后
将其保存在某个变量中
然后在同一操作中调用该服务方法
但这不是正确的事情,因为我认为应该有比我建议的事情更有效的事情
【问题讨论】:
标签:
ruby-on-rails
xml
web-services
rest
xml-serialization
【解决方案1】:
RoR 本身并不使用 XML,因此需要进行一定程度的转换。
话虽如此,XML 生成在 RoR 应用程序中非常简单。有几种方法可以做到这一点,我最喜欢将所需数据构造为 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,祝你好运。