Searching for SOAP methods from an Amazon S3 web service

If you need to interact with a server that implements web services in Simple Object Access Procedure (SOAP), then this recipe can help to get a starting point.

Getting ready

We can use the third-party SOAPpy library for this task. This can be installed by running the following command:

$pip install SOAPpy

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 8.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 – 8
# This program is optimized for Python 2.7.
# It may run on any other version with/without modifications.

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():
 "Key Details:"
        for k,v in proxy.methods[key].__dict__.iteritems():
            print "%s ==> %s" %(k,v)
 

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 8_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>]

How it works...

This script defines a method called list_soap_methods() that takes a URL and constructs a SOAP proxy object by calling the WSDL.Proxy() method of SOAPpy. The available SOAP methods are available under this proxy's method attribute.

An iteration over the proxy's method keys are done to introspect the method keys. A for loop just prints the details of a single SOAP method, that is, the name of the key and details about it.

..................Content has been hidden....................

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