Frage

Ich brauche xml zu einem Webservice zu schreiben und ich versuche HTTParty zu verwenden. Kann jemand ein Beispiel geben, wie ich mich über so tun?

Hier wird das Format der XML-I vorgesehen ist, schreiben:

<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>

Hier ist meine Klasse so weit:

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

Ich bin mir nicht ganz sicher, wie add_candidate zu konkretisieren.

Jede mögliche Hilfe würde geschätzt.

Danke.

War es hilfreich?

Lösung

Sie haben zwei Optionen. HTTParty können Sie sowohl einen String oder einen Hash veröffentlichen.

Die String-Version wäre:

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>")

Funktional, aber nicht schön. Ich würde dies tun, anstatt:

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

Jetzt kann ich nicht sicher sagen, ob die Namespaces vom Endpunkt erforderlich sind, und wenn ja, ob die Hash-Version funktioniert. Wenn das der Fall ist, können Sie mit dabei, den Körper als String gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top