Qualcuno può fornire un esempio su come inviare XML utilizzando HTTParty e Ruby on Rails?

StackOverflow https://stackoverflow.com/questions/3773939

  •  04-10-2019
  •  | 
  •  

Domanda

Ho bisogno di inviare un po 'di XML ad un webservice e sto cercando di utilizzare HTTParty. Qualcuno può fornire un esempio di come vado a fare così?

Ecco il formato del file XML che ho bisogno di scrivere:

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

Questa è la mia classe finora:

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

Non sono del tutto sicuro di come rimpolpare add_candidate.

Qualsiasi aiuto sarebbe apprezzato.

Grazie.

È stato utile?

Soluzione

Hai due opzioni. HTTParty ti permette di inviare sia una stringa o un hash.

La versione stringa sarebbe:

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

Funzionale, ma non abbastanza. Mi piacerebbe fare questo, invece:

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

Ora, non posso dire con certezza se gli spazi dei nomi sono richiesti dal punto finale, e in caso affermativo, se la versione hash funzionerà. Se questo è il caso, si può andare con il fare il corpo sotto forma di stringa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top