2010-09-22 14 views
7

Potrzebuję opublikować trochę xml do usługi sieci web i próbuję użyć HTTParty. Czy ktoś może podać przykład tego, jak to robię?Czy ktoś może podać przykład, jak publikować XML za pomocą HTTParty i Ruby on Rails?

Oto format XML muszę odpowiedzieć:

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

Oto moja klasa tak daleko:

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 

Nie jestem pewien, w jaki sposób ciało się add_candidate.

Każda pomoc zostanie doceniona.

Dzięki.

Odpowiedz

16

Masz dwie opcje. HTTParty pozwala wysłać zarówno ciąg znaków, jak i skrót.

Wersja ciąg byłoby:

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

funkcjonalna, ale nie całkiem. Chciałbym to zrobić w zamian:

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

Teraz nie mogę powiedzieć na pewno, czy przestrzenie nazw są wymagane przez punkt końcowy, a jeśli tak, to czy wersja hash będzie działać. Jeśli tak jest, być może będziesz musiał wykonać ciało jako ciąg.

+0

Dzięki. Dokładnie to, czego potrzebowałem! –

+0

Bez obaw. Jeśli moje rozwiązanie rozwiązało problem, "zaakceptuj" odpowiedź, klikając znak wyboru po lewej stronie mojej odpowiedzi. W ten sposób łatwiej będzie uzyskać odpowiedzi na inne pytania. – vonconrad

+1

Podoba mi się twoja ładna wersja. Jak dodać atrybut do jednego z elementów? Powiedz: e-mail wymagał wywołania atrybutu "foo" z wartością "bar". Jak byś to zrobił? – doremi

Powiązane problemy