2013-04-05 45 views
0

因爲我之前從來沒有這樣做過,所以我想知道是否有人能夠指出某些資源在處理XML(post/puts請求)時顯示最佳實踐,或者可能會顯示一個示例。將XML發回服務器Rails

例如我試圖回發一些XML的google contacts api更新聯繫人

我目前做的是輸入的XML保存到我的模型,編輯功能在應用程序中進行,然後保存回該model.Once一切都更新,然後我要發佈回更新聯繫方式返回XML格式的API,目前我只更新的電子郵件地址和個人命名

這是PUTS請求

https://www.google.com/m8/feeds/contacts/userEmail/full/{contactId} 

有人可以提供一個他們如何做的例子嗎?

的XML要返回是

PUT /m8/feeds/contacts/default/full/<var>contactId</var> 
If-Match: <var>Etag</var> 

<entry gd:etag='<var>Etag</var>'> 
<id>http://www.google.com/m8/feeds/contacts/<var>userEmail</var>/base/<var>contactId</var></id> 
<updated>2008-02-28T18:47:02.303Z</updated> 
<category scheme='http://schemas.google.com/g/2005#kind' 
term='http://schemas.google.com/contact/2008#contact'/> 
<gd:name> 
<gd:givenName>New</gd:givenName> 
<gd:familyName>Name</gd:familyName> 
<gd:fullName>New Name</gd:fullName> 
</gd:name> 
<content type='text'>Notes</content> 
<link rel='http://schemas.google.com/contacts/2008/rel#photo' type='image/*' 
href='https://www.google.com/m8/feeds/photos/media/<var>userEmail</var>/<var>contactId</var>'/> 
<link rel='self' type='application/atom+xml' 
href='https://www.google.com/m8/feeds/contacts/<var>userEmail</var>/full/<var>contactId</var>'/> 
<link rel='edit' type='application/atom+xml' 
href='https://www.google.com/m8/feeds/contacts/<var>userEmail</var>/full/<var>contactId</var>'/> 
<gd:phoneNumber rel='http://schemas.google.com/g/2005#other' 
primary='true'>456-123-2133</gd:phoneNumber> 
<gd:extendedProperty name='pet' value='hamster'/> 
<gContact:groupMembershipInfo deleted='false' 
href='http://www.google.com/m8/feeds/groups/<var>userEmail</var>/base/<var>groupId</var>'/> 
</entry> 
</pre> 

任何建議表示讚賞

感謝

+0

你看的[on Rails的谷歌數據](https://developers.google.com/gdata/articles/gdata_on_rails)項目? – 2013-04-05 13:20:26

+0

謝謝,什麼是acl_entry = << - EOF並仍然不確定如何適合通過api更新聯繫人?對不起 – Richlewis 2013-04-05 13:23:34

回答

1

我不知道谷歌的API接觸任何東西,但POST/PUT/GET在使用Net::HTTP,HTTParty或類似的方法,Rails非常簡單。

在HTTParty我敢肯定它是這樣的:

require 'httparty' 
response = HTTParty.put("https://www.google.com/m8/feeds/contacts/userEmail/full/{contactId}", 
      :body => { :xml => xml_data }) 
+0

啊好的,所以xml_data是我創建的xml對象?所以它創建了我不確定的xml對象 – Richlewis 2013-04-05 13:27:41

+0

我不知道你要發送什麼數據或第三方服務期望的數據,但實際上是這樣的,在我的例子中'xml_data'預計會是一串XML數據。 – 2013-04-05 13:30:57

+0

我添加了他們期望的例子xml作爲一個例子,你介意看看,提供一些關於這個過程的想法,請 – Richlewis 2013-04-05 13:33:15