Может кто-нибудь привести пример того, как публиковать XML с помощью HTTParty и Ruby on Rails? - PullRequest
7 голосов
/ 23 сентября 2010

Мне нужно опубликовать какой-нибудь xml на веб-сервис, и я пытаюсь использовать 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.

Любая помощь будет оценена.

Спасибо.

1 Ответ

19 голосов
/ 23 сентября 2010

У вас есть два варианта.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,
  }
}

Теперь я не могу точно сказать, требуются ли пространства имен конечной точке, и если да, будет ли работать версия хеша.Если это так, возможно, вам придется использовать тело в виде строки.

...