Cle*_*oum 6 xml ruby-on-rails builder httparty net-http
我目前正在开发一个Rails应用程序,我需要动态地将XML请求发送到外部Web服务.我以前从未这样做过,我有点失落.
更准确地说,我需要在订单状态更新时向我的后勤合作伙伴发送请求.例如,当确认订单时,我需要发送客户地址,取件地址等数据......
我打算使用XML构建器动态生成请求,并根据此示例使用 Net:HTTP或HTTParty发布请求.
这是正确的方法吗?如何在控制器外生成XML请求,然后在HTTParty或Net:HTTP中使用它?
谢谢你的帮助,
克莱姆
该方法可以正常工作.
至于如何在需要的地方获取XML,只需像其他任何数据一样传递它.您可以使用Builder表示,它将根据需要自动转换为String,或者您可以传递to_sBuilder对象的stringified()版本.
例如,如果您的模型(我们称之为OrderStatus)生成XML,并且您的控制器发布请求是有意义的:
# Model (order_status.rb)
def to_xml
xml = Builder::XmlMarkup.new
... # Your code here
xml
end
Run Code Online (Sandbox Code Playgroud)
# Controller (order_statuses_controller.rb)
def some_method
@order_status = OrderStatus.find(:some_criteria)
... # Your code here
http = Net::HTTP.new("www.thewebservicedomain.com")
response = http.post("/some/path/here", @order_status.to_xml)
end
Run Code Online (Sandbox Code Playgroud)
您可能希望将HTTP调用包装在begin/ rescue/ end块中并对响应执行某些操作,但除此之外,它们都非常简单明了.
使用Builder创建XML,然后将其发送到网络中.
在您的情况下,听起来您可能需要在订单发展时发送多个不同的请求; 在这种情况下:
我的示例使用一种方法生成XML,也许您需要5种方法来处理5种可能的订单状态.
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |