gSOAP is a portable development toolkit for C and C++ XML Web services and XML data bindings. It supports XML auto-serialization of C/C++ data. Includes WSDL/XSD schema binding tools, stub/skeleton compiler, Web server, SOAP/XML/MIME streaming, XML-RPC. Here is how to use it to build a web service client in Qt.
- Download and unzip the gSOAP package [sourceforge.net].
gSOAP package contains pre-built tools in the
.xsd files of the web service to generate a c++ stub.
Modify your project
- First use
wsdl2hon a .wsdl file to generate a .h file, then use
soap2cppon the generated .h file to generate .h and .cpp files to be included in your Qt project.
- Before using
wsdl2hyou have to modify the
typemap.datfile, this file is present in
gsoap/wsdirectory. Add a line in this file defining the namespace of your web service. Give any name to
namespaceand copy string from your .wsdl file following the tag.
- <definitions targetNamespace=http://something>
Add this line to
- Anything =”http://something”
- Now run
wsdl2hon .wsdl and .xsd files (from command prompt)
- wsdl2h –s -t<path of typemap.dat> –o <name of generated .h file e.g chatpp.h> <path and name of .wsdl file>
(note .xsd file should be in same directory as .wsdl file)
- Then use
soapcpp2on generated .h file (we assume that name of generated file is chatapp.h)
- soapcpp2 –i chatpp.h
this will generate multiple files
and an xml file for each method in defined in .wsdl file.
- now add
as headers in to your qt project and then add
- add include path of yor generated file in .pro file of your qt project or simply copy all of generated files to your project directory. Also add path of “libws2_32.a” in your .pro file I my case it is as under
- LIBS += C:/NokiaQTSDK/mingw/lib/libws2_32.a
- also add stdsoap2.h and stdsoap2.cpp from gsoap directory as header and source in your project.
- now include chatapp.nsmap and chatappProxy.h in your main.cpp.
- make an object of chatappProxy and use it to communicate with webservice.
above method worked for me while using gsoap with NokiaQtSDk on windows xp.