2010-09-22 27 views
7

我需要發佈一些XML到Web服務,我試圖使用HTTParty。有人能提供一個例子來說明我如何去做?有人可以提供如何使用HTTParty和Ruby on Rails發佈XML的例子嗎?

這裏是XML的格式,我需要張貼:

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

這裏是我的班至今:

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 

我不太清楚如何充實add_candidate。

任何幫助,將不勝感激。

謝謝。

回答

16

你有兩個選擇。 HTTParty允許你發佈一個字符串或散列。

字符串版本是:

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

功能,但不漂亮。我會這樣做:

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

現在,我無法確定名稱空間是否是端點所需要的,如果是的話,散列版本是否將工作。如果是這樣的話,你可能不得不把身體做成一個字符串。

+0

謝謝。正是我需要的! – 2010-09-23 13:02:05

+0

不用擔心。如果我的解決方案解決了問題,請點擊答案左側的複選標記以「接受」答案。通過這種方式,您可以更輕鬆地獲得其他問題的答案。 – vonconrad 2010-09-24 01:06:36

+1

我喜歡你漂亮的版本。你將如何添加一個屬性到其中一個元素?說:電子郵件需要一個屬性調用'foo'值'bar'。你會怎麼做? – doremi 2012-08-07 19:02:54

相關問題