这篇日志真的是要写,因为这个gsoap的使用研究了一天,下午的时候一度要崩溃掉!
1 通过wsdl文件生成.h文件
wsdl2h -o 头文件名 WSDL文件名或URL
type map文件用于指定SOAP/XML中的类型与C/C++之间的转换规则,比如在wsmap.dat里写
2 由.h文件生成所需要的cpp/c文件
soapcpp2 头文件
soapcpp2 ayandy.h
将生成下面这些文件
综上所述
如果看到soapcpp2提示:”Critical error: #import: Cannot open file "stlvector.h" for reading.“, 那是因为我们的头文件使用了STL(wsdl2h 没用-s选项),这时要使用-I选项指定gSOAP的 import文件路径,这个路径是"$gsoap\gsoap\import":
soapcpp2 ayandy.h -I D:\gsoap-2.7\gsoap\import
------------------------------------------
这些文件没把我给弄崩溃了,简要说一下吧:
工程中所要包含的文件(不是include的)有:
soapStub.h soapH.h stdsoap2.h AbysalEmail.h (这个文件时第一步生成的头文件)
soapC.cpp stdsoap2.cpp soapClient.cpp (客户端) soapServer.cpp
这个要搞清楚。
程序中include的头文件有
#include "soap/ServiceSoap.nsmap"//命名空间,这个必不可少
#include "soap/soapH.h
#include "soap/soapServiceSoapProxy.h" //如果使用代理类
调用哪些方法 可以去 soapStub.h 去找
ps:
很重要的是 如果在vc中开发的话,引入的3个cpp文件要进行设置
方法:工程 -》设置 -》选择cpp文件 -》预编译头 -》选择不使用
另一方面 ,soap也是使用socket通信的 所以链接的时候还要加上wsock32.lib
方法: 工程-》设置-》链接 在后面加上wsock32.lib即可