一,通過wsdl2h獲取onvif.h文件
在使用wsdl2h產(chǎn)生頭文件前需要修改typemap.dat,
修改的依據(jù)在這里:http://www.cs.fsu.edu/~engelen/soap.html,在FAQ頁面下的Howdo I use gSOAP for the ONVIF specifications?
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#cat typemap.dat
#Use gSOAP 2.8.10 and up. In the typemap.dat file used by wsdl2h,add:
#
tds
wsnt
wsdd10__HelloType
wsdd10__ByeType
wsdd10__ProbeType
wsdd10__ProbeMatchesType
wsdd10__ProbeMatchType
wsdd10__ResolveType
wsdd10__ResolveMatchesType
wsdd10__ResolveMatchType
#
SOAP_ENV__Envelope
SOAP_ENV__Header
SOAP_ENV__Fault
SOAP_ENV__Detail
SOAP_ENV__Code
SOAP_ENV__Subcode
SOAP_ENV__Reason
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#
關(guān)于onvif所有的wsdl都在這里:http://www.onvif.org/Documents/Specifications.aspx中的ONVIFWSDL and XML SchemasSpecifications一節(jié),雖然可以全部下載為wsdl文件,但是wsdl文件中存在相互依賴的關(guān)系,并且是帶有存儲的依賴,所以最好直接使用url來產(chǎn)生頭文件,不要下載下來。
root@microcreat:/workdir/private/onvif/workdir#mkdir onvif_discovery
root@microcreat:/workdir/private/onvif/workdir#cd onvif_discovery/
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#ls
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#pwd
/workdir/private/onvif/workdir/onvif_discovery
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#ls
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#wsdl2h -o onvif.h -c -s -t ./typemap.dat http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl
**
**
**
**
**
Saving onvif.h
Reading type definitions from type map file './typemap.dat'
Connecting to'http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl'to retrieve WSDL/XSD...
Connected, receiving...
Connecting to'http://schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd'to retrieve schema...
Connected, receiving...
Done reading'http://schemas.xmlsoap.org/ws/2005/04/discovery/ws-discovery.xsd'
Connecting to 'http://schemas.xmlsoap.org/ws/2004/08/addressing'to retrieve schema...
Connected, receiving...
Redirected to'http://schemas.xmlsoap.org/ws/2004/08/addressing/'...
Connecting to'http://schemas.xmlsoap.org/ws/2004/08/addressing/' to retrieveschema...
Connected, receiving...
Done reading ''
Done reading'http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl'
To complete the process, compile with:
> soapcpp2 onvif.h
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#ls
onvif.h
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#soapcpp2 -c onvif.h -x -I/workdir/private/onvif/gsoap-2.8/gsoap/import -I/workdir/private/onvif/gsoap-2.8/gsoap/
**
**
**
**
**
Saving soapStub.h annotated copy of the inputdeclarations
Using tdn service name: RemoteDiscoveryBinding
Using tdn service style: document
Using tdn service encoding: literal
Using tdn service location: http://localhost:80
Using tdn schema namespace: http://www.onvif.org/ver10/network/wsdl
Saving RemoteDiscoveryBinding.nsmap namespace mapping table
Saving soapClient.c client calling stubs
Saving soapClientLib.c client stubs with serializers (use only forlibs)
Saving soapServer.c server request dispatcher
Saving soapServerLib.c server request dispatcher with serializers(use only for libs)
Saving soapH.h interface declarations
Saving soapC.c XML serializers
Compilationsuccessful
root@microcreat:/workdir/private/onvif/workdir/onvif_discovery#ls
onvif.h
RemoteDiscoveryBinding.nsmap