如何开发gsoap client
工作需要用C++做一个webservice客户端,开发环境为:vs 2005 学习了一下gSoap。
gSoap下载地址:
http://sourceforge.net/projects/gsoap2/files/
解压:
在编写客户端之前我们必须提供webservice的服务器端:
笔者的webservice服务器使用axis来生成wsdl文件
提供的方法如下:
public class Hello {
public String hello(String name) {
if (name == null)
name = "";
return name + ", welcome to the world of web service!";
}
}
wsdl文件如下图:
服务器端接介绍到这 下面我们开始我们的主题 编写客户端:
1 编写客户端我们需要用到前面介绍的gsoap工具 进入解压好的gsoap\bin\win32 该目录下有我们需要使用soapcpp2.exe和wsdl2h.exe。
wsdl2h.exe 的使用:
用法:
wsdl2h -o 头文件名 WSDL文件名或URL
wsdl2h常用选项
-
-o
文件名,指定输出头文件
-
-n
名空间前缀 代替默认的ns
-
-c
产生纯C代码,否则是C++代码
-
-s
不要使用STL代码
-
-t
文件名,指定type map文件,默认为typemap.dat
-
-e
禁止为enum成员加上名空间前缀
soapcpp2.exe 的使用:
常用选项
-
-C
仅生成客户端代码
- -S 仅生成服务器端代码
-
-L
不要产生soapClientLib.c和soapServerLib.c文件
-
-c
产生纯C代码,否则是C++代码(与头文件有关)
-
-I
指定import路径(见上文)
-
-x
不要产生XML示例文件
-
-i
生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。
2生成客户端存根:
wsdl2h -o
hello.h http://localhost/webservice/Hello.jws?wsdl
从wsdl得到头文件
执行完这步会在当前目录下生成hello.h头文件
soapcpp2 -o
hello.h //根据生成的头文件来生成存根
如果执行完这步会在当前目录下生成:
当然如果在执行该步骤时如果看到soapcpp2提示:”Critical error: #import: Cannot open file "stlvector.h" for reading.
“, 那是因为我们的头文件使用了STL(wsdl2h 没用-s选项
),这时要使用-I
选项指定gSOAP的 import文件路径,这个路径是"$gsoap\gsoap\import
":
soapcpp2 hello.h -I D:\gsoap_2.7.16\gsoap-2.7\gsoap\import
3 建立新项目ws4
将生成的文件复制到你工程目录中:其中stdsoap2.h,stdsoap2.cpp 在
gsoap目录下
stlvector.h 在
gsoap\import目录下
注意事项:
1,stdsoap2.cpp ,soapC.cpp , soapServiceSoapProxy.cpp 不需要预编译。
2. 常见错误示例, error C1010 ,一般是预编译头文件的问题,在主函数中需要选预编译,添加 StdAfx.h
error LNK2001 在网络编程中需要WSOCK32.lib ,添加上即可。
error BK 1506: cannot open file ..... 取消Build browse info file
复制完成如图:
然后将其添加进项目如图:
5编程客户端
新建hello.cpp
#include "soapH.h" // 得到存根程序
#include "HelloSoapBinding.nsmap"
#include<stdlib.h>
#include <iostream>
#include <string>
#include "soapStub.h"
#include "stdsoap2.h"
using namespace std;
int main()
{
struct soap clientSOAP;
string s1 = "fuck";
string s2 = "";
soap_init(&clientSOAP);
if(soap_call_ns1__hello(&clientSOAP, NULL, NULL, s1, s2) == SOAP_OK)
{
cout<<s2<<endl;
}
else
{
printf("Error\n");
}
soap_destroy(&clientSOAP);
soap_end(&clientSOAP);
soap_done(&clientSOAP);
return 0;
}
6 编译运行:
- 大小: 7.2 KB
- 大小: 52.6 KB
- 大小: 5.6 KB
- 大小: 8.8 KB
- 大小: 17 KB
- 大小: 7.6 KB
- 大小: 4.4 KB
- 大小: 16.4 KB
- 大小: 19.1 KB
分享到:
相关推荐
C++通过gSOAP开发WebService客户端
gsoap 服务端 客户端gsoap 服务端 客户端gsoap 服务端 客户端gsoap 服务端 客户端
C++用gsoap做客户端和服务器端,VS2010测试通过,内含两个程序
gsoap客户端实例代码,对应文档资料在我的资源里,进入即可看到,并下载,文档内容比较详细,进去看过就知道啦
gSOAP用于C/C++开发WebService客户端和服务器端,使其过程非常简单。
通过交叉编译将gsoap移植到安卓平台,开发gsoap服务端程序以及用于测试的客户端程序
本人花费了好长时间,终于对SOAP协议的开发有个大致的了解,这里把本人所做的gSOAP客户端和服务端的简单示例上传给大家,希望能对SOAP入门的开发人员有帮助
gSOAP是一个夸平台的,用于开发Web Service服务端和客户端的工具,在Windows、Linux、MAC OS和UNIX下使用C和C++语言编码。本资源是gSoap2.8.11版,里面还含有一个简单示例。
gsoap c++ webservice client
在vs2010下的Gsoapserver服务器和客户端
c++通过gsoap调用webservices实例
C++使用gsoap调用webservice接口,无需积分,仅供参考,内置说明文档,欢迎下载。
C++利用gsoap实现webService服务端代码
android通过jni调用gsoap客户端的打包的so.包含相应的mk文件。以及客户端所有文件。
VS2010使用c++、gSOAP创建的WebService 源码 参考:http://blog.csdn.net/testcs_dn/article/details/51463367
C++通过gSoap访问webService,vs2010的完整项目,打开运行查看效果,另外有一个说明的文档,发现csdn不能传多个文件,到我的下载列表里面找找吧。
在VS2010下,使用C/C++通过gsoap调用webservice接口。 包含使用文档,C和C++调用实例。
利用gsoap实现web service的服务端和客户端,参考网址:http://blog.csdn.net/JoeBlackzqq/article/details/7942066
gsoap服务端 c++实现gsoap服务端 c++实现gsoap服务端 c++实现
关于基于C++的gSOAP web service 客户端程序开发的亲身项目实战经验总结,对于想深入学习gSOAP和ONVIF会有非常大的帮助。读者可在此文中学到深入浅出的SOAP知识,gSOAP移植流程,软件架构设计以及开发流程知识。读完...