How to do it...

We create a proxy instance and introspect the server methods before we can call them.

In this recipe, let's interact with an Amazon S3 storage service. We have got a test URL for the web services API. An API key is necessary to do this simple task.

Listing 7.5 gives the code for searching for SOAP methods from an Amazon S3 web service, as shown:

#!/usr/bin/env python 
# Python Network Programming Cookbook -- Chapter - 7 
# This program requires Python 2.7 or any later version 
# SOAPpy has discontinued its support for Python 3. 
# You may find more information and other potential libraries at https://stackoverflow.com/questions/7817303/what-soap-libraries-exist-for-python-3-x 
 
import SOAPpy 
 
TEST_URL = 'http://s3.amazonaws.com/ec2-downloads/2009-04-04.ec2.wsdl' 
 
 
def list_soap_methods(url): 
    proxy = SOAPpy.WSDL.Proxy(url) 
    print ('%d methods in WSDL:' % len(proxy.methods) + '
') 
    for key in proxy.methods.keys(): 
        print ("Key Name: %s" %key) 
        print ("Key Details:") 
        for k,v in proxy.methods[key].__dict__.iteritems(): 
            print ("%s ==> %s" %(k,v)) 
        break 
 
if __name__ == '__main__': 
    list_soap_methods(TEST_URL) 
 

If you run this script, it will print the total number of available methods that support web services definition language (WSDL) and the details of one arbitrary method, as shown:

    $ python 7_5_search_amazonaws_with_SOAP.py 
    /home/faruq/env/lib/python2.7/site-packages/wstools/XMLSchema.py:1280: UserWarning: annotation is 
    ignored
      warnings.warn('annotation is ignored')
    43 methods in WSDL:
    
    Key Name: ReleaseAddress
    Key Details:
        encodingStyle ==> None
        style ==> document
        methodName ==> ReleaseAddress
        retval ==> None
        soapAction ==> ReleaseAddress
        namespace ==> None
        use ==> literal
        location ==> https://ec2.amazonaws.com/
        inparams ==> [<wstools.WSDLTools.ParameterInfo instance at 
    0x8fb9d0c>]
        outheaders ==> []
        inheaders ==> []
        transport ==> http://schemas.xmlsoap.org/soap/http
        outparams ==> [<wstools.WSDLTools.ParameterInfo instance at 
    0x8fb9d2c>]
  
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.218.171.212