在开发客户端程序前,需要使用前面提到的两个工具生成一些必要的文件。

首先使用wsdl2h生成头文件。用法:

wsdl2h -o 头文件名 WSDL文件名或URL

这时会生成一个头文件。(网上很多是wsdl2h -c...,尝试后发现有问题)

接下来使用soapcpp2生成相应源码。用法:soapcpp2 头文件名

soapcpp2常用选项

  • -C:仅生成客户端代码
  • -S:仅生成服务端代码
  • -L:不要产生soapClientLib.c和soapServerLib.c文件
  • -c:产生纯C代码,否则是C++代码(与头文件有关)
  • -I:指定import路径
  • -x:不要产生XML示例文件
  • -i:生成C++包装,客户端为*Proxy.h(.cpp),服务端为*Service.h(.cpp)
  • 注:如果报错:Critical error: #import: Cannot open file "stlvector.h" for reading. Hint: use option -I (you can define multiple paths separated with ';')则要要使用-I选项指定gSOAP的import文件路径,这个路径是"$gsoap\share\gsoap\import"(linux,gSOAP2.7): soapcpp2 -C test.h -I /usr/local/gSOAP/share/gsoap/import

    将生成的nsmap、h和cpp文件以及gSOAP安装目录下的stdsoap2.h和stdsoap2.cpp共7个文件添加到客户端工程中,再添加代码:

    #include "*.nsmap"

    到这里,编写客户端之前的准备工作都已经完成了,剩下的就是调用服务端的web method进行客户端编程了。