Qualcuno può fornire un esempio su come inviare XML utilizzando HTTParty e Ruby on Rails?
-
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.
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.