2010-09-22 6 views
7

मुझे कुछ xml को webservice पर पोस्ट करने की आवश्यकता है और मैं HTTParty का उपयोग करने की कोशिश कर रहा हूं। क्या कोई ऐसा उदाहरण प्रदान कर सकता है कि मैं ऐसा करने के लिए कैसे जाता हूं?क्या कोई रेलवे पर HTTParty और रूबी का उपयोग कर XML पोस्ट करने के लिए उदाहरण प्रदान कर सकता है?

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 बाहर मांस के लिए कैसे नहीं कर रहा हूँ:

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

यहाँ मेरी कक्षा अब तक है:

यहाँ एक्सएमएल का प्रारूप मैं पोस्ट करने के लिए की जरूरत है।

किसी भी मदद की सराहना की जाएगी।

धन्यवाद।

उत्तर

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

अब, मुझे यकीन है कि के लिए है कि क्या नामस्थान endpoint के लिए आवश्यक हैं नहीं कह सकता, और यदि ऐसा है तो, हैश संस्करण फ़ायदेमंद साबित होगा। यदि ऐसा है, तो आपको शरीर को एक स्ट्रिंग के रूप में करने के साथ जाना पड़ सकता है।

+0

धन्यवाद। मुझे जिस चीज की जरूरत थी! –

+0

कोई चिंता नहीं। अगर मेरे समाधान ने समस्या हल की है, तो कृपया मेरे उत्तर के बाईं ओर चेक मार्क पर क्लिक करके जवाब स्वीकार करें। इस तरह के अन्य सवालों के जवाब पाने में आपके पास एक आसान समय होगा। – vonconrad

+1

मुझे आपका सुंदर संस्करण पसंद है। आप तत्वों में से एक को एक विशेषता कैसे जोड़ देंगे? कहें: ईमेल को मूल्य 'बार' के साथ एक विशेषता कॉल 'foo' की आवश्यकता होती है। आप वह कैसे करेंगें? – doremi

संबंधित मुद्दे