ठीक है, तो साबुन का झाग काफी जादू का एक सा है।
एक suds.client.Client
, WSDL फ़ाइल से बनाया गया है:
client = suds.client.Client("http://mssoapinterop.org/asmx/simple.asmx?WSDL")
यह डबल्यूएसडीएल डाउनलोड करता है और client.wsdl
में एक परिभाषा पैदा करता है। जब आप client.service.<method>
के माध्यम से एक विधि का उपयोग कर साबुन का झाग फोन यह वास्तव में है कि व्याख्या की डबल्यूएसडीएल के खिलाफ पर्दे के पीछे पुनरावर्ती संकल्प जादू की एक पूरी बहुत कुछ कर रहा है। विधियों के लिए पैरामीटर और प्रकारों को खोजने के लिए आपको इस ऑब्जेक्ट का आत्मनिरीक्षण करने की आवश्यकता होगी।
उदाहरण के लिए:
for method in client.wsdl.services[0].ports[0].methods.values():
print '%s(%s)' % (method.name, ', '.join('%s: %s' % (part.type, part.name) for part in method.soap.input.body.parts))
इस तरह कुछ प्रिंट करना चाहिए:
echoInteger((u'int', http://www.w3.org/2001/XMLSchema): inputInteger)
echoFloatArray((u'ArrayOfFloat', http://soapinterop.org/): inputFloatArray)
echoVoid()
echoDecimal((u'decimal', http://www.w3.org/2001/XMLSchema): inputDecimal)
echoStructArray((u'ArrayOfSOAPStruct', http://soapinterop.org/xsd): inputStructArray)
echoIntegerArray((u'ArrayOfInt', http://soapinterop.org/): inputIntegerArray)
echoBase64((u'base64Binary', http://www.w3.org/2001/XMLSchema): inputBase64)
echoHexBinary((u'hexBinary', http://www.w3.org/2001/XMLSchema): inputHexBinary)
echoBoolean((u'boolean', http://www.w3.org/2001/XMLSchema): inputBoolean)
echoStringArray((u'ArrayOfString', http://soapinterop.org/): inputStringArray)
echoStruct((u'SOAPStruct', http://soapinterop.org/xsd): inputStruct)
echoDate((u'dateTime', http://www.w3.org/2001/XMLSchema): inputDate)
echoFloat((u'float', http://www.w3.org/2001/XMLSchema): inputFloat)
echoString((u'string', http://www.w3.org/2001/XMLSchema): inputString)
तो भाग के प्रकार टपल के पहले तत्व शायद है कि तुम क्या कर रहे हैं के बाद:
>>> client.factory.create(u'ArrayOfInt')
(ArrayOfInt){
_arrayType = ""
_offset = ""
_id = ""
_href = ""
_arrayType = ""
}
अद्यतन:
मौसम सेवा के लिए ऐसा लगता है कि "पैरामीटर" नहीं एक element
एक type
साथ एक हिस्सा हैं:
>>> client = suds.client.Client('http://www.webservicex.net/WeatherForecast.asmx?WSDL')
>>> client.wsdl.services[0].ports[0].methods.values()[0].soap.input.body.parts[0].element
(u'GetWeatherByZipCode', http://www.webservicex.net)
>>> client.factory.create(u'GetWeatherByZipCode')
(GetWeatherByZipCode){
ZipCode = None
}
लेकिन इस विधि कॉल (एक ला client.service.GetWeatherByZipCode("12345")
के मापदंडों में magic'd है। आईआईआरसी यह एसओएपी आरपीसी बाध्यकारी शैली है? मुझे लगता है कि आपको शुरू करने के लिए यहां पर्याप्त जानकारी है। संकेत: पायथन कमांड लाइन इंटरफ़ेस आपका मित्र है!
का डिफ़ॉल्ट रूप किसी कारण से, इन सभी wsdl मैं के साथ काम कर रहा हूँ के साथ "कोई नहीं" हैं, तो मैं, पैरामीटर या प्रकार मिलता है फिर भी नहीं है , वे str (क्लाइंट) में दिखाई देते हैं और दोनों पैरामीटर और टाइप करते हैं। – Wyrmwood