[MOBY-dev] Perl API and BioMOBY Central WSDL: BioMOBY with new "stable" SOAP::Lite broken...
Pieter Neerincx
Pieter.Neerincx at wur.nl
Mon Jan 30 13:32:04 UTC 2006
Hi all,
After quite some time there is finally an updated SOAP::Lite. I never
got the BioMOBY stuff working with the previous beta's, so I was
stuck on S::L 0.60. But now there is 0.66 and 0.67 was already
submitted to CPAN. And 0.68 might be there by the time you read this.
It's been a while since the last "stable" versions of S::L and now
they are popping up like mushrooms :). Unfortunately they don't work
with BioMOBY. I found 2 issues. One of them is clearly a S::L
problem, so I mailed to the corresponding list (And for those who are
interested, there's a temporary fix in that post as well). For the
other one I'm not sure, but I do now it can be fixed easily by a
small change in ~moby-live/Perl/MOBY/Central.pm. There is a problem
with the WSDL that BioMOBY Central generates. There are several
namespaces in this WSDL and on them is prefixed with "soap":
$WSDL_TEMPLATE = <<END;
<?xml version="1.0"?>
<wsdl:definitions name="MOBY_Central_Generated_WSDL"
targetNamespace="http://biomoby.org/Central.wsdl"
xmlns:tns="http://biomoby.org/Central.wsdl"
xmlns:xsd1="http://biomoby.org/CentralXSDs.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
etc.
As far as I understand it (after browsing the specs for the different
versions of WSDL, SOAP, WSDL SOAP binding etc. that drove me nuts)
the "soap" prefixed namespace is for the SOAP binding described by
the WSDL document. Unfortunately when S::L is processing the response
from BioMOBY Central it thinks the "soap" prefixed namespace is for
the SOAP message eventhough the WSDL is wrapped in a CDATA block.
Since this namespace is not the valid one for SOAP version 1.1 or 1.2
S::L complains that the entire response is in an unsupported version
of SOAP :(. Either something has to change in S::L, or we change the
prefix of the namespace. As far as I understand the prefixes for
namespaces are not standardised and could be anything. In lots of
examples I found on the net I saw:
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/",
xmlns:soapwsdl="http://schemas.xmlsoap.org/wsdl/soap/" or
xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
instead of:
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
So what do the others think. Should this be patched in S::L or can we
change the prefix for this namespace from soap to for example wsoap?
Cheers,
Pieter
Wageningen University and Research centre (WUR)
Laboratory of Bioinformatics
Transitorium (building 312) room 1034
Dreijenlaan 3
6703 HA Wageningen
The Netherlands
phone: 0317-483 060
fax: 0317-483 584
mobile: 06-143 66 783
pieter.neerincx at wur.nl
More information about the MOBY-dev
mailing list