2010-09-22 9 views
7

Ho bisogno di postare qualche xml su un webservice e sto cercando di usare HTTParty. Qualcuno può fornire un esempio su come faccio a farlo?Qualcuno può fornire un esempio su come pubblicare XML usando HTTParty e Ruby on Rails?

Qui è il formato del file XML che ho bisogno di postare:

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

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

io non sono del tutto sicuro di come rimpolpare add_candidate.

Qualsiasi aiuto sarebbe apprezzato.

Grazie.

risposta

16

Hai due opzioni. HTTParty ti consente di pubblicare sia una stringa che 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 lavorerò. Se è così, potresti dover fare il corpo come una stringa.

+0

Grazie. Proprio quello di cui avevo bisogno! –

+0

Nessun problema. Se la mia soluzione ha risolto il problema, si prega di "accettare" la risposta facendo clic sul segno di spunta a sinistra della mia risposta. Avrai un tempo più semplice per ottenere risposte ad altre domande in questo modo. – vonconrad

+1

Mi piace la tua bella versione. Come aggiungeresti un attributo a uno degli elementi? Di ': E-mail aveva bisogno di un attributo chiamato' pippo 'con valore' bar '. Come lo faresti? – doremi

Problemi correlati