加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 动态生成XML并将其发布到Rails中的Web服务

发布时间:2020-12-16 23:08:34 所属栏目:百科 来源:网络整理
导读:我目前正在开发一个Rails应用程序,我需要动态地将 XML请求发送到外部Web服务.我以前从未这样做过,我有点失落. 更准确地说,我需要在订单状态更新时向我的后勤合作伙伴发送请求.例如,当确认订单时,我需要发送客户地址,取件地址等数据…… 我打算使用XML构建器
我目前正在开发一个Rails应用程序,我需要动态地将 XML请求发送到外部Web服务.我以前从未这样做过,我有点失落.

更准确地说,我需要在订单状态更新时向我的后勤合作伙伴发送请求.例如,当确认订单时,我需要发送客户地址,取件地址等数据……

我打算使用XML构建器动态生成请求,使用Net:HTTP或HTTParty发布请求,基于this example.

这是正确的方法吗?如何在控制器外生成XML请求,然后在HTTParty或Net:HTTP中使用它?

谢谢你的帮助,

克莱姆

解决方法

该方法可以正常工作.

至于如何在需要的地方获取XML,只需像其他任何数据一样传递它.您可以使用Builder表示,它将根据需要自动转换为String,或者您可以传递Builder对象的字符串化(to_s)版本.

例如,如果您的模型(我们称之为OrderStatus)生成XML,并且您的控制器发布请求是有意义的:

# Model (order_status.rb)
def to_xml
  xml = Builder::XmlMarkup.new
  ... # Your code here
  xml
end
# 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

您可能希望将HTTP调用包装在begin / rescue / end块中并对响应执行某些操作,但除此之外,它们都非常简单明了.

使用Builder创建XML,然后将其发送到网络中.

在您的情况下,听起来您可能需要在订单发展时发送多个不同的请求;在这种情况下:

>计划您可能的订单状态.
>确定每个州需要发送哪些数据.
>决定如何在模型中表示该状态,以便在状态发生变化时发送相应的请求.

我的示例使用一种方法生成XML,也许您需要5种方法来处理5种可能的订单状态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读