【问题标题】:Can someone provide an example for how to post XML using HTTParty and Ruby on Rails?有人可以提供如何使用 HTTParty 和 Ruby on Rails 发布 XML 的示例吗?
【发布时间】:2010-09-22 21:59:19
【问题描述】:

我需要将一些 xml 发布到 web 服务,并且我正在尝试使用 HTTParty。有人可以举例说明我是如何做到的吗?

这是我需要发布的 XML 格式:

<Candidate xmlns="com.mysite/2010/10/10" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<FirstName></FirstName>
<LastName></LastName>
<Email></Email>
<Gender></Gender>
</Candidate>

到目前为止,这是我的课程:

require 'httparty'


class Webservice
  include HTTParty
  format :xml
  base_uri 'mysite.com'
  default_params :authorization => 'xxxxxxx'

  def self.add_candidate(first_name,last_name,email,gender)
    post('/test.xml', :body => "")    
  end  
end

我不太确定如何充实 add_candidate。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: ruby-on-rails xml httparty


    【解决方案1】:

    您有两个选择。 HTTParty 允许您发布字符串或哈希。

    字符串版本是:

    post('/test.xml', :body => "<Candidate xmlns=\"com.mysite/2010/10/10\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><FirstName>#{first_name}</FirstName><LastName>#{last_name}</LastName><Email>#{email}</Email><Gender>#{gender}</Gender></Candidate>")
    

    实用,但不漂亮。我会这样做:

    post('/test.xml', :body => {
      :Candidate => {
        :FirstName => first_name,
        :LastName  => last_name,
        :Email     => email,
        :Gender    => gender,
      }
    }
    

    现在,我不能确定端点是否需要命名空间,如果需要,哈希版本是否可以工作。如果是这种情况,您可能不得不将正文作为字符串进行。

    【讨论】:

    • 不用担心。如果我的解决方案解决了问题,请单击我的答案左侧的复选标记“接受”答案。通过这种方式,您将更容易获得其他问题的答案。
    • 我喜欢你漂亮的版本。您将如何向其中一个元素添加属性?说:电子邮件需要一个属性调用“foo”,其值为“bar”。你会怎么做?
    • 请注意,这不会在客户端转换为 XML,而是发布一堆 HTTP 变量。对于需要 XML 的现有 Web 服务,这并不是真正的替代方案。相反,您可以使用 ActiveSupport 的 to_xml 函数,该函数被添加到哈希中。
    • 你救了我的命。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多