[Xml-compile] ONVIF wsdl and XML::Compile::WSDL11

Sandro Magrí sandro at freenetst.it
Sun Feb 7 14:20:25 GMT 2016


I state not to know almost nothing about SOAP and XML,
but I tried using XML::Compile::SOAP to make a ONVIF client
to get information and move around some PTZ cameras and NVT (network 
video transmitter),
because I still prefer perl to other more modern languages
and this library seems to me the best and the most complete
for XML and SOAP among those present on CPAN, a very goog work.
The specifications are on the Open Network Video InterFace site:
http://www.onvif.org/onvif/ver10/schema/onvif.xsd
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl
http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl
....

After downloading the locally .wsdl and .xsd files, I tried
  ./wsdl-explain.pl --wsdl /etc/onvif/wsdl/devicemgmt.wsdl --xsd 
/etc/onvif/schema/onvif.xsd
but give the error
error: operation GetServices has a message for its portType but no 
encoding in the binding

The same error is given by the compile method in all the code that I had 
tried to write.
A look at the source and is the problem is in the sub operation of 
XML::Compile::WSDL11 operation,
  which chooses SOAP11 for a SOAP12 only webservice (the wsdl files 
haven't address).
I did a quick and dirty change to WSDL11.pm (one line,  $prefix = 
$prefix."12" ),
to finish quickly a first version of the script, that now work well.

But I wanted to know if there's a neat and clean way
to force the use of SOAP12 in WSDL11.

                Best Regards,
                        Sandro Magri   <sandro at freenetst.it>
                        FreeNet ST      http://www.freenetst.it






More information about the Xml-compile mailing list