From: Anakim B. <ab...@us...> - 2004-02-22 17:05:16
|
I'm trying to use ZSI (release 1.4.1) to access web services exposed by EBI (http://www.ebi.ac.uk/Tools/webservices/WSDbfetch.html). My first attempt resulted in a failure: >>> from ZSI import ServiceProxy >>> p=ServiceProxy('db.wsdl') >>> p.getSupportedDBs() Traceback (most recent call last): File "<stdin>", line 1, in ? File "/usr/lib/python2.3/site-packages/ZSI/ServiceProxy.py", line 82, in __call__ return self.parent()._call(self.__name__, *args, **kwargs) File "/usr/lib/python2.3/site-packages/ZSI/ServiceProxy.py", line 65, in _call apply(getattr(binding, callinfo.methodName), args) File "/usr/lib/python2.3/site-packages/ZSI/client.py", line 28, in __call__ requesttypecode=TC.Any(self.name, aslist=1)) File "/usr/lib/python2.3/site-packages/ZSI/client.py", line 132, in RPC return self.Receive(replytype, **kw) File "/usr/lib/python2.3/site-packages/ZSI/client.py", line 261, in Receive raise FaultException(msg) ZSI.FaultException: The AXIS engine could not find a target service to invoke! targetService is null Taking a look at the SOAP message ZSI generated and comparing it with the one by the Java client EBI provides, I think I've found the problem: --- ZSI --- <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ZSI="http://www.zolera.com/schemas/ZSI/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > <SOAP-ENV:Body > <getSupportedDBs> </getSupportedDBs> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ----------- --- Java client --- <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:getSupportedDBs soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:Dbfetch"/> </soapenv:Body> </soapenv:Envelope> ----------- The <getSupportedDBs> tag should be <ns1:getSupportedDBs xmlns:ns1="urn:Dbfetch"/>; if I manually change the ZSI request adding the namespace, everything works. Is there any way I can tell ZSI to do that automatically? Thanks for the help -- Anakim Border ab...@us... http://pydc.sourceforge.net |