Expanding on my last post about being able to successfully connect to Convio Web Services in three lines, I’d like to get a little more in depth and actually construct the necessary SOAP headers and make a simple call. I’ve written a small PHP implementation as well. I was able to make a successful log in to CWS in just 2 lines of PHP code!

Now, as far as CWS goes, Python and PHP may not instantly be an obvious choice as far as languages go, mainly because they are both largely scripting languages. CWS is mainly for robust data syncing operations and those tasks generally go to languages like Java or C#, however, I’m a high level language guy, so I go with what I know. Also, Python and PHP both make SOAP exceedingly easy to work with, so there’s no real reason why you can’t, with a bit of discipline, write a perfectly excellent and robust data sync operation in either of these languages … especially Python.
So, here are my examples. They are exceedingly simple and easy once again. The Python example leverages suds once again and the PHP example is using PHP’s pretty impressive built in SOAP library. Each example shows you how to create the SOAP client using the Convio WSDL, make a successful log in to CWS, create a valid session header for subsequent calls, and how to make a call that grabs the number of constituents that have been added to the Convio database.
If you find either of these examples helpful, please let me know! Keep in mind these are just functional examples. There is no proper error handling or any sort of architecture here; they are just some bare bones examples on how to get data from CWS.
Python
from suds.client import Client # Load the WSDL client = Client('https://secureX.convio.net/1.0/CLIENT/wsdl') # Log in to CWS login = client.service.Login('apiadmin', 'password') # Set the session header session = client.factory.create('Session') session.SessionId = login.SessionId client.set_options(soapheaders=session) # Get the number of constituents added since last sync data = dict(PartitionId=1001, RecordType='Constituent', PageSize=1) response = client.service.GetIncrementalInsertsCount(**data); # Show the number of constituents added print '%d constituents have been added since the last sync.' % (int(response.RecordCount))
PHP
// Load the WSDL $client = new SoapClient('https://secureX.convio.net/1.0/CLIENT/wsdl'); // Log in to CWS $login = $client->Login(array('UserName'=>'apiadmin', 'Password'=>'password')); // Set the session header $headerBody = array('SessionId'=>$login->Result->SessionId); $header = new SoapHeader('urn:soap.convio.com', 'Session', $headerBody); $client->__setSoapHeaders($header); // Get the number of constituents added since last sync $data = array ( 'PartitionId' => 1001, 'RecordType' => 'Constituent', 'PageSize' => 1 ); $response = $client->GetIncrementalInsertsCount($data); // Show the number of constituents added print(sprintf("%d constituents have been added since the last sync\n", (int) $response->Result->RecordCount));
