- 浏览: 3478012 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
1.1.1 gSOAP
1.1.1 .1 简介
gSOAP 编译工具提供了一个 SOAP/XML 关于 C/C++ 语言的实现,从而让 C/C++ 语言研发 web 服务或客户端程式的工作变得轻松了很多。绝大多数的 C++web 服务工具包提供一组 API 函数类库来处理特定的 SOAP 数据结构,这样就使得用户必须改变程式结构来适应相关的类库。和之相反, gSOAP 利用编译器技术提供了一组透明化的 SOAP API ,并将和研发无关的 SOAP 实现细节相关的内容对用户隐藏起来。 gSOAP 的编译器能够自动的将用户定义的本地化的 C 或 C++ 数据类型转变为符合 XML 语法的数据结构,反之亦然。这样,只用一组简单的 API 就将用户从 SOAP 细节实现工作中解脱了出来,能够专注和应用程式逻辑的实现工作了。 gSOAP 编译器能够集成 C/C++ 和 Fortran 代码(通过一个 Fortran 到 C 的接口),嵌入式系统,其他 SOAP 程式提供的实时软件的资源和信息;能够跨越多个操作系统,语言环境连同在防火墙后的不同组织。
gSOAP 使编写 web 服务的工作最小化了。 gSOAP 编译器生成 SOAP 的代码来序列化或反序列化 C/C++ 的数据结构。 gSOAP 包含一个 WSDL 生成器,用他来为您的 web 服务生成 web 服务的解释。 gSOAP 的解释器及导入器能够使用户无需分析 web 服务的细节就能够实现一个客户端或服务端程式。
1.1.1 .2 gSOAP+VC 研发客户端
gSOAP 是开放的 C/C++ 源码的 soap 服务器实现,本章节简单介绍使用 gSOAP 研发 2.2.1 .3 中的 AXIS 服务器的客户程式。
下载 gSOAP 工具的代码地址,当前最新版本是 2.7.8 c 版本:
http://sourceforge.net/project/showfiles.php?group_id=52781
解压缩本地目录,进入 bin 目录
根据 wsdl 生成头文档方式有以下几种:
生成 C++ 代码
$ wsdl2h -o testClient.h http://localhost:8080/axis/services/HelloService?wsdl
生成 C++ 代码,不是用 STL
$ wsdl2h -s -o testClient.h http://localhost:8080/axis/services/HelloService?wsdl
生成纯 C 代码
$ wsdl2h -c -o testClient.h http://localhost:8080/axis/services/HelloService?wsdl
本例使用 C++ 代码(含 STL )方式
生成客户端代码,使用如下命令(不带 -C 参数生成客户端和服务器代码)
soapcpp2 -C –I..\import testClient.h
打开 VC ,创建一个 Win32 的控制台程式 soapClient , "Project", Settings", selec t the "Link" tab (the project file needs to be selected in the file view) an d add "wsock32.lib 。
把刚刚生成的以下代码添加到工程中去:
soapStub.h soapH.h soapC.cpp soapClient.cpp soapClientLib.cpp
在 main 函数中写入代码 soapClient.cpp :
// soap.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "soapH.h"
#include "HelloServiceSoapBinding.nsmap"
int main(int argc, char* argv[])
{
struct soap soap;
std::string a="STS Corp.";
int b=0;
std::string result;
if (argc < 3)
{ fprintf(stderr, "Usage: string num\n");
exit(0);
}
soap_init(&soap);
a=argv[1];
b = atoi(argv[2]);
DWORD begin= GetTickCount();
for (int i=0;i<1;i++)
{
soap_call_ns1__sayHello(&soap, "http://10.41.25.70:8080/axis/services/HelloService", "", a, b, result);
if (soap.error)
{
soap_print_fault(&soap, stderr);
exit(1);
}
else
printf("result = %s\n", result.c_str());
b++;
}
DWORD end= GetTickCount();
printf(" 每秒处理 %d 个 \n", 1*1000/(end-begin));
soap_destroy(&soap);
soap_end(&soap);
soap_done(&soap);
system("pause");
return 0;
}
编译完成后,直接以命令行方式运行程式 soapClient “ STS Corp. ” 9
输出结果为 result = Hello: “ STS~~~~~~~~~~square=0 ,配置循环控制变量能够简单用于测试性能。
代码中使用 soap_init2 能够配置 http1.1 消息头的 connection 属性为 keep-alive ,当配置为 keep-alive 时,每秒交互能够达到 360 次以上,假如使用 close 方式,每秒交互大约 200 次以上。
发出的请求消息如下:
POST /axis/services/HelloService HTTP/1.1
Host: 10.41.25.70:8080
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 478
Connection: close
SOAPAction: ""
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://demo"><SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><ns1:sayHello><in0>STS Corp.</in0><in1>9</in1></ns1:sayHello></SOAP-ENV:Body></SOAP-ENV:Envelope>
响应消息:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Date: Tue, 29 Aug 2006 10:36:45 GMT
Connection: close
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://demo"><sayHelloReturn xsi:type="xsd:string">Hello:STS Corp.~~~~~~~~~~square=81</sayHelloReturn></ns1:sayHelloResponse></soapenv:Body></soapenv:Envelope>
1.1.1 .3 gSOAP+VC 研发服务器
gSOAP 是开放的 C/C++ 源码的 soap 服务器实现,能够参考 gSOAP 包中的帮助文档,本文档略。
发表评论
-
使用iconv进行内码转换(Big5->GB2312)
2012-02-26 00:56 3396i conv 是一个通过unicode 作为中间码 ... -
关于IObjectSafety和ActiveX组件的脚本安全
2011-11-17 19:19 3094都说ActiveX 危险,那么 ... -
在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全。你想允许这种交互
2011-11-17 19:09 14715如果采用VC++开发的ActiveX,那么第一次运行的时候,I ... -
如何编写 INF 文件
2011-11-16 14:31 2138INF文件全称Information File文件,是Wino ... -
MINGW GCC 4.3.0 安装与配置(解决CREATEPROCESS问题)
2011-07-28 23:53 4670首先,下载Mingw TDM 4.3.0版本http:// ... -
“没有找到MSVCP90D.dll”的解决办法
2011-04-02 00:21 4681出现这个bug的缘故是 ... -
DSO开发指南晋级(APACHE2.0 MOD 模块开发)
2010-09-23 04:23 2285APACHE2.0 MOD 模块开发 STEP ... -
ubuntu 7.10里装apxs2
2010-09-23 03:43 1952install apache2-prefork-dev ... -
codeblocks中plugin的实现
2010-02-16 00:47 3291快乐虾 http://blog.csdn.net/lig ... -
Ubuntu 下安装 Code::Blocks
2010-02-15 23:41 11987在Linux环境下,就不同 ... -
C/C++ IDE Code::Blocks安装过程
2010-02-15 23:27 54671.简介 Code::Blocks,有时 ... -
CodeLite可以媲美Code::Blocks
2010-02-15 21:27 41670CodeLite简单就是为wxWidgets/wxFormBu ... -
编写Apache模块——mod_helloworld
2010-01-02 17:23 3162自Apache2.0以来Apache就是一个开放的平台,开发人 ... -
APR中的单元测试框架:深入分析内部实现
2010-01-02 17:19 1837APR单元测试框架实现的实在简单,除了断言集之外ABTS只向外 ... -
APR中的单元测试框架:初步分析及使用
2010-01-02 17:19 1861我所了解的C的单元测试框架很少,至少我google了一把没有发 ... -
使用apr-util中的DBD API
2010-01-02 17:15 30241. 简介 在Apache2.1版本中引入了DBD ... -
C++ dlopen mini HOWTO 中译版
2009-06-27 16:09 2450C++ dlopen mini HOWTO 作者 ... -
BEA Tuxedo
2009-04-02 13:44 3112参数纠错 Tuxedo(Transaction for U ...
相关推荐
gsoap使用教程和soapui测试webservice接口使用教程,附上测试用的wsdl文件,有详细截图,一看就懂,抓紧下载查看吧!代码也在csdn上
带gsoap-2.8源码,基于服务器客户端的实例,带自动生成服务客户端代码的批处理程序,及如何使用。带自己学习参考的教程; 0.解压附件,soapInterface.bat所在路径不得含中文 空格 1.新建头文件 取soapInterface....
本文档主要介绍C++如何使用gSoap调用java的webservice接口. 是一篇自己工作中使用写下的使用说明。 非常详细步骤,带有简单示例的详细说明文档。
gsoap实现onvif discover教程文档十分详细 物有所值
gSOAP 开发 Web Service 程序
gSOAP 开发手册,做好了目录,以及有些英文翻译
gsoap是一个开发webservice的C++库,可以快速开发webservie服务,客服端。
discovery工程、gsoap源码包,博客中有详细图文教程。
gsoap2.8.11实现onvif_discover详细教程
该资源包含了gsoap的服务端和客户端,实现了itoa(),add()方法,客户有两个,一个使用代理的方式实现,一个使用普通的方式实现,具体的教程可以看csdn博客https://blog.csdn.net/testcs_dn/article/details/51463367...
请使用msvc2010打开gsoap_2.8.11/gsoap/james/gSOAP.vcxproj 步骤 1. cd gsoap-2.8/gsoap/james ..\bin\win32\wsdl2h -cdkPs -t ..\typemap.dat -o onvif_wsdl.h 步骤 2...\bin\win32\soapcpp2.exe -2cLx -I..\...
VS2010使用c++、gSOAP调用WebService 图文教程 参考:http://blog.csdn.net/testcs_dn/article/details/51526051
gSOAP 编译器可以集成C/C 和Fortran 代码(通过一个Fortran 到C 的接口),嵌入式系统,其他SOAP 程序提供的实时软件的资源和信息;可以跨越多个操作系统,语言环境以及在防火墙后的不同组织。 目录: 1.介绍........
gSOAP是一个开源的项目,用它可以方便的使用c/c 地进行SOAP客户端和服务器端编程,而不必了解xml和SOAP协议的细节。这样使用者就可以专注于自己的web service 客户端或服务器端的编写,而不用纠缠与其它细节。 压...
SOAP教程C++CSHAP 如何使用gsoapSOAP教程C++CSHAP 如何使用gsoap
gSOAP工具箱是广泛的便携式C和C ++软件套件,用于开发具有强大的类型安全XML数据绑定的XML Web服务。 易于使用的代码生成器工具使您可以直接在C和C ++中集成XML数据。 以XML序列化本机应用程序数据。 包括WSDL / XSD...
构建gsopa环境mfc wsdl地址 显示在messagebox 利用CMarkup保存为xml文件
实验4.4 tslib移植和使用78 4.5 显示接口与Linux FrameBuffer83 4.5.1 FrameBuffer机制介绍83 4.5.2 LCD简介84 实验4.5 FrameBuffer实验88 4.6 V4L程序设计90 4.6.1 V4L概述90 4.6.2 V4L设备的体系结构91 ...
gsoap库源码,可以直接解压使用。关于如何使用,可以参考网上的教程。
实验4.4 tslib移植和使用78 4.5 显示接口与Linux FrameBuffer83 4.5.1 FrameBuffer机制介绍83 4.5.2 LCD简介84 实验4.5 FrameBuffer实验88 4.6 V4L程序设计90 4.6.1 V4L概述90 4.6.2 V4L设备的体系结构91 ...