工作需要用vc做一个webservice客户端,学习了一下gSoap。
gSoap下载地址
1. 下载后解压到本地硬盘,找到F:\Work Folder\gsoap-2.8\gsoap\bin\win32\目录
看到下面有wsdl2h.exe和soapcpp2.exe可执行文件
2. 运行D:\gsoap-2.8\gsoap\bin\win32\
3. 运行D:\gsoap-2.8\gsoap\bin\win32\
TermInfoHttpBinding.example.req.xml
TermInfoHttpBinding.example.res.xml
TermInfoHttpBinding.nsmap
soapC.cpp
soapClient.cpp
soapClientLib.cpp
soapBankingHttpTermInfoO
soapBankingHttpTermInfog
soapH.h
soapServer.cpp
soapServerLib.cpp
soapStub.h
- soapStub.h
// soap的存根文件,定义了ayandy.h里对应的远程调用模型 - soapC.c soapH.h
// soap的序列和反序列代码,它已经包含了soapStub.h,服务器端与客户端都要包含它 - soapClient.c soapClientLib.c
// 客户端代码,soapClientLib.c文件则只是简单地包含soapClient.c和soapC.c - soapServer.c soapServerLib.c
// 服务器端代码,soapServerLib.c文件则只是简单地包含soapServer.c和soapC.c - ServiceSoap.nsmap ServiceSoap12.nsmap
// 名空间定义,服务器端与客户端都要包含它 - soapServiceSoapProxy.h soapServiceSoap12Proxy.h
// 客户端的C++简单包装(如果头文件是纯C代码,这两个文件就不会生成)
综上所述
- 如果编写服务器端,项目里应该加入soapServerLib.c,代码里包含头文件soapH.h
- 如果编写客户端,项目里应该加入soapClientLib.c,代码里包含头文件SoapH.h(或xxxxProxy.h)
- 当然,还要加入gsoap库里的stdsoap2.cpp文件(如果是写C代码,则加入stdsoap2.c)
wsdl2h常用选项
- -o
文件名,指定输出头文件 - -n
名空间前缀 代替默认的ns - -c
产生纯C代码,否则是C++代码 - -s
不要使用STL代码 - -t
文件名,指定type map文件,默认为typemap.dat - -e
禁止为enum成员加上名空间前缀
type map文件用于指定SOAP/XML中的类型与C/C++之间的转换规则,比如在wsmap.dat里写
soapcpp2常用选项
- -C
仅生成客户端代码 - -S 仅生成服务器端代码
- -L
不要产生soapClientLib.c和soapServerLib.c文件 - -c
产生纯C代码,否则是C++代码(与头文件有关) - -I
指定import路径 - -x
不要产生XML示例文件 - -i
生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。
4. 拷贝以下文件到vc工程目录
soapC.cpp
soapH.h
soapClient.cpp
soapStub.h
BankingHttpBinding.nsmap
stdsoap2.h (在gsoap根目录)
stdsoap2.cpp (在gsoap根目录)
5. 将以上文件加入vc工程里,选择soapC.cpp,soapClient.cpp,stdsoap2.cpp右击鼠标Property ->c++->precompiled Headers,选择Not using precompiled headers (预编译头)
准备工作完成,开始编写代码,下面是个简单的例子:
#include "stdafx.h"
#include <stdio.h>
#include "soapH.h"
#include "TermInfoHttpBinding.nsmap"
#include <iostream>
#include
using namespace std;
int main(int argc,char **argv)
string out=*addUserResponse.out;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。