संपादित करें: यह रेल के 2.x. का पुराना उत्तर डेटिंग है। अधिक वर्तमान उत्तर के लिए, मैं आपको railscast #290 देखने की सलाह देता हूं। मैं इस जवाब को यहां छोड़ रहा हूं अगर कोई अभी भी किसी कारण से रेल 2.x का उपयोग कर रहा है, और वहां लागू नहीं हो सकता है जो रायन बेट्स कहता है।
मैं कुछ दिनों से इसके साथ लड़ रहा हूं और मुझे लगता है कि मुझे स्वयं समाधान मिला है।
एसओएपी इंटरैक्शन के लिए मुझे सबसे सरल, सबसे सक्रिय मणि मिल सकता है जिसे Savon कहा जाता है।
यह रूबी के साथ ही काम करना चाहिए। रेलवे के साथ इसका उपयोग करने के तरीके पर एक त्वरित दौरा यहां दिया गया है:
मणि इंस्टॉल करें। सबसे आसान तरीका है
config.gem "savon"
और फिर चलाने
rake gems:install
यह कुछ और जवाहरात के साथ savon स्थापित करना चाहिए config/पर्यावरण को संपादित करने और जोड़ने के लिए है।
इसके बाद, अपने app/models/
निर्देशिका पर एक वर्ग बनाने
तुम मुझे पसंद कर रहे हैं, तो आप रहना चाहते हैं जाएगा (यह ActiveRecord का एक उपवर्ग, अपने मॉडल निर्देशिका पर सिर्फ एक नियमित रूप से वर्ग होने के लिए नहीं है) जितना संभव हो एक्सएमएल से दूर। आप इस तरह एक वर्ग बनाने के द्वारा ऐसा कर सकते हैं:
class MyWebservice
WSDL = "http://www.theWebSiteWithAService.com/wsdl"
def self.client
@@client ||= Savon::Client.new(WSDL)
end
def self.soap_actions
return client.wsdl.soap_actions
end
def self.invoke(action, parameters)
response = client.send(action) { |soap| soap.body = parameters }
return response.to_hash
end
end
आप ज्यादातर तरीकों लागू के लिए उपयोग किया जाएगा। आप जिस तरह के तरीकों का आह्वान करने में सक्षम होंगे, वे "दूसरी साइट" प्रदान करने वाली सेवाओं पर निर्भर करते हैं। आइए कल्पना करें कि 3 क्रियाएं उपलब्ध हैं - :create_monkey
, :destroy_monkey
& :list_monkeys
। आप इस बात की पुष्टि कर सकते हैं कि सूची रेल कंसोल पर ऐसा करने से सही है:
MyWebservice.soap_actions
=> [:create_monkey, :destroy_monkey, :list_monkeys]
अब कल्पना करें कि आप आह्वान करना चाहते हैं: create_monkey। सबसे पहले आपको यह जानने की जरूरत है कि उस कॉल के लिए किन पैरामीटर की आवश्यकता है। इसे देखने के लिए सबसे अच्छी जगह wsdl फ़ाइल ही है। आप कुछ इस तरह देखना चाहिए: name
और hair_color
:
<message name="create_monkey_request">
<part name="name" type="xsd:string"/>
<part name="hair_color" type="xsd:string"/>
</message>
<message name="create_monkey_response">
<part name="status" type="xsd:string"/>
</message>
तो यह दो पैरामीटर लेता है।माणिक कंसोल पर, आप इसे इस तरह से आह्वान कर सकते हैं:
MyWebService.invoke :create_monkey, {:name => 'frank', :hair_color => 'red' }
=> {:status => 'ok'}
आप एक प्रतिक्रिया के रूप में एक हैश मिल जाएगा। इस मामले में मुझे 'ठीक' स्थिति मिली, लेकिन यह कहीं अधिक जटिल हो सकता है।
बाद में, आप (उदाहरण के लिए) एक tableless modelMonkey
कहा जाता है बनाते हैं, और new
, create
, आदि है कि वेब सेवा का उपयोग जैसे तरीकों को परिभाषित कर सकते हैं।
मैं सुरक्षा जैसी कई रोचक चीजें छोड़ रहा हूं। लेकिन अगर आपको वही समस्या हो तो आपको यह शुरू करना चाहिए।
सम्मान!