Hello everybody,

recently I was able to debug and successfully use an apache cxf webservice from 
a soappy client.

There were 3 distinct tricks I had to use and so I figured to document the 
tricks to a public place in case anybody else is interested

The first observation is that for methods not containing any input everything 
works as advertised

The problem starts when you want to actually pass any parameters. In that case 
you have to:
1) specify the namespace
2) use the patch below to enable the namespace per argument support
3) if the medhod has multiple parameters you have to specify the correct 
ordering

here are the steps in an example

#!/usr/bin/python

import SOAPpy

ns1="http://iface.ws.lib.biovista.com/";;

server = SOAPpy.SOAPProxy("http://srv-eu.biovista.com/ws/BEAService";, 
namespace=ns1); # step 1

print server.getAvailableTypes();
print server.getText(pubmed_id=1233);
#server.config.dumpSOAPOut = 1;
#server.config.dumpSOAPIn = 1;
server.config.argsOrdering = {'getBibliography': ['name', 'type', 
'max_results']}; # step 3
print server.getBibliography(name="il-6", type="Gene", max_results=4);

----------------- patch to SOAPpy -----------------------   # step 2

--- SOAPBuilder.py.orig 2009-04-08 12:00:34.000000000 +0300
+++ SOAPBuilder.py      2009-04-08 13:23:02.000000000 +0300
@@ -316,6 +316,8 @@

         tag = tag or self.gentag()

+        if self.namespace:
+            tag = ns_map.get(self.namespace) + ":" + tag
         tag = toXMLname(tag) # convert from SOAP 1.2 XML name encoding

         a = n = t = ''


     .bill

Reply via email to