Tutorial 11: SOAP

This sections shows several examples how to use SOAP client.


Module hydratk.lib.network.soap.client


  • load_wsdl: load service definition from WSDL (remote located on server, local located on file system)

  • get_operations: get service operations

  • send_request: send request to server


    API uses HydraTK core functionalities so it must be running.


# import library
import hydratk.lib.network.soap.client as soap

# initialize client
client = soap.SOAPClient()

# load WSDL from server
# returns bool

# get service operations
# returns list of names

# send request to chosen operation with XML body
# SOAP envelope is added by client itself
body = '<web:GetCitiesByCountry xmlns:web=\"http://www.webserviceX.NET\"><web:CountryName>Italy</web:CountryName>

# returns XML body
response = client.send_request('GetCitiesByCountry', body=body)

# load WSDL from filesystem, service uses authentication Basic, NTLM, certificate
# WSDL is stored on filesystem, real service endpoint is not specified in WSDL
client.load_wsdl(path_to_wsdl, location='local', user='soap_user', passw='soap_passw', auth='Basic', endpoint='soap_mu_url')
client.load_wsdl(path_to_wsdl, location='local', user='soap_user', passw='soap_passw', auth='NTLM', endpoint='soap_mu_url')
client.load_wsdl(path_to_wsdl, location='local', cert='/home/lynus/cert.pem', endpoint='soap_mu_url')
client.load_wsdl(path_to_wsdl, location='local', cert=('/home/lynus/cert.pem', '/home/lynus/key.pem'), endpoint='soap_mu_url')

# load WSDL from filesystem, service uses authentication via specific HTTP headers
client.load_wsdl(path_to_wsdl, location='local', endpoint='soap_cm_url',
                 headers = {'Username' : 'soap_user', 'Password' : 'soap_passw'})

# load WSDL using proxy
client.load_wsdl(url, proxies={'http': ''})