gsoap 的教程和使用

C++与gSOAP实现Web服务实战教程 Web服务是一种软件系统,设计用于支持网络中的机器对机器交互。它允许应用程序或服务通过网络,如互联网,以标准化的方式进行通信。Web服务的核心作用是实现业务功能的远程调用,使其成为松耦合的服务集成的关键技术。gSOAP是一个开源的C/C++ Web服务开发工具包,它提供了一系列的工具和库来帮助开发者快速创建SOAP兼容的Web服务和客户端。gSOAP支持WSDL,可以从WSDL自动生成C++代码,并将C++类和函数映射到SOAP Web服务。 阅读详情

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.8c版本:

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", select the "Link" tab (the project file needs to be selected in the file view) and 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包中的帮助文档,本文档略。

gsoap源代码 带实例带教程带使用说明 带gsoap-2.8源码,基于服务器客户端的实例,带自动生成服务客户端代码的批处理程序,及如何使用。带自己学习参考的教程; 0.解压附件,soapInterface.bat所在路径不得含中文 空格 1.新建头文件 取soapInterface.bat文件的同名:soapInterface.h 文件内编写接口,具体说明看附件参考的教程 //gsoap ns service name: gservice //gsoap ns service style: rpc int ns__add(int num1, int num2, int* result ); int ns__sub(int num1, int num2, int* result ); int ns__mult( int num1, int num2, int *result); int ns__divid( int num1, int num2, int *result); 2.从附件内gsoap-2.8包中搜索复制stdsoap2.h,stdsoap2.cpp,soapcpp2.exe, 存放于soapInterface.bat同级目录 3.双击soapInterface.bat运行。生成gClientSoap,gServerSoap两个文件夹,分别复制到服务器工程与客户端工程中使用 4.gClientSoap,gServerSoap两个文件夹内用到的文件功能说明,更多参考附件教程 1)soapC.cpp , soapH.h//soap的序列和反序列代码,它已经包含了soapStub.h 2)soapServer.c ppsoapServerLib.cpp //服务器端代码(纯C代码是soapServer.c soapServerLib.c ),soapServerLib.cpp文件则只是简单地包含soapServer.cpp和soapC.cpp 3)soapClient.cpp soapClientLib.cpp//客户端代码(纯C代码是soapClient.csoapClientLib.c ),soapClientLib.cpp文件则只是简单地包含soapClient.cpp和soapC.cpp 4) soapStub.h // soap的存根文件,定义了我们编写的头文件里对应的远程调用模型 5) add.nsmap //XML服务命名空间 6)服务器端要载入的文件有:soapServer.cpp,soapC.cpp,stdsoap2.cpp; 要包含的文件有:gservice.nsmap,soapH.h; 客户端要输入的文件有: soapClient.cpp,soapC.cpp,stdsoap2.cpp; 要包含的文件有:gservice.nsmap,soapH.h 立即下载

相关推荐

自然语言处理:稀疏向量表示

稀疏向量表示是指运用特定的方法和技术,将数据(如文本、图像、信号等)转化为向量形式,且该向量具有大部分元素值为零,仅少数元素值非零的特征,以此来实现对数据的高效存储、处理和分析。

老赵爱学习的博客 1443

[原创]gsoap的基本使用方法『C++web服务工具包』

简介: gSOAP一种跨平台的C和 C++软件开发工具包, 让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。 简而言之,gSOAP为C/C++语言提供了对SOAP/XML的一系列操作。 这里只介绍使用gSOAP工具来调用指定服务器提供的webService接口操作(client C++)。

qq_50868258的博客 3802

Trans论文复现:电池储能调峰和调频:超线性增益的联合优化程序代码!

本程序参考一区SCI期刊《Using Battery Storage for Peak Shaving and Frequency Regulation: Joint Optimization for Superlinear Gains》,程序。与之前将电池储能用于单一应用相比,研究结果表明,如果电池联合提供多种服务,它们可以获得比以前想象的更大的经济效益。欢迎感兴趣的小伙伴关注下方公众号获取完整版代码哦~,小编会继续推送更有质量的学习资料、文章程序代码~限于篇幅,仅列出部分算例的结果!

weixin_48747334的博客 567

c++Gsoap使用教程

一、下载最新gsoap包,下载完成解压就可以了。二、把Wsdl2h.exe的目录设置成环境变量。三、生成头文件wsdl2h  -o xxx.h url(xxx.h为自己定义 的头文件名称,url为需要访问的webservice地址+?wsdl例如:http://localhost:2063/Service1.asmx?wsdl)。注:执行此步骤时若输入url生成的头文件为空时,可以用webserv...

zhaoxz 5672

通俗易通解释SLAM问题的数学描述:运动方程和观测方程

高翔博士在他的《视觉SLAM十四讲》中把SLAM问题的数学描述抽象成了两个数学方程,以下对此做个总结,并且对此做一些通俗易懂的解释: 一、方程的总体形式 作为理性层次的描述,我们引入数学方程来描述SLAM过程,其中第一个方程叫做运动方程、第二个方程叫做观测方程,想象一下我们在研究SLAM的时候肯定需要观测机器人(无人汽车、无人机等都可以统称为机器人)的运动(画面感很强哈哈),这样很容易理解并且记忆这两个方程的名称和意义: 二、变量的含义 我们看到,这两个方程中有大量的英文字母作为变量存在其中,下面介绍一下

weixin_41855010的博客 7114

RBF(径向基神经网络)基础解析与代码实例:拟合任意函数

目前RBF这一强大工具已经被基本证实可以拟合任意函数! 在机器学习领域,神经网络是一种强大的工具,用于解决各种复杂问题。其中,径向基函数(RBF,Radial Basis Function)神经网络以其独特的结构和优异的性能,在非线性函数逼近、模式识别等领域表现尤为突出。RBF神经网络是一种前馈神经网络,其隐含层节点的激活函数采用径向基函数,具有更强的局部逼近能力和更快的收敛速度。

橙色小博的博客,励志在人工智能领域发光发热! 1604

gSoap使用方法

1. 从WSDL得到头文件 wsdl2h -o ayandy.h -n ay http://www.ayandy.com/Service.asmx?WSDL 2. 从头文件得到存根(Stub)源文件 soapcpp2 -i -C -x ayandy.h -ID:\gsoap-2.7\gsoap\import 命令选项注释: -i 直接使用C++包装类 -x 不要

C/C++ 658

哈希拓展攻击CTF题做法

kali下载相关工具hash-ext-attack:hash拓展题目特征:2023楚慧杯upload_shell实验吧之让我进去:前言:具体怎么加密解密补位的原理我不懂,深入理解的部分我在文末挂了链接,以下也只是我做题的结论和通解,可能不准确(但是做题还挺准确),有错误欢迎指出:是在密码加密过程中引入的一个随机值,它与密码结合使用,目的是增加密码的复杂性和安全性。在密码加密中,常见的做法是将用户提供的密码进行哈希处理,然后存储哈希值而不是明文密码

2301_76690905的博客 2419

gsoap教程

gSOAP官方地址:http://gsoap2.sourceforge.net/ 首先下载最新版本gSOAP源码包,本文演示下载最新的gsoap_2.8.8.zip,然后解压到D:\gsoap-2.8,可以看到很多源码文件及编译配置文件。首先最好阅读根目录下readme.txt文件,gsoap目录下还有samples目录下有大量的例子可供编译参考。 一、创建服务器端源文件 依次进

mr_lee 2813

RT-DETR训练前的准备,将数据集划分成训练集、测试集验证集(附完整脚本及使用说明)

在计算机视觉领域,当我们着手训练一个模型时,。其中,将数据集划分为和更是一项基础性且关键的操作。这篇博客分析了这一划分背后的原因、其重要意义以及如何通过代码实现,帮助大家更好地理解和运用这一技巧,。

Limiiiing的博客 906

FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)

FortiOS 是 Fortinet 公司开发的操作系统,作为 Fortinet 安全平台的核心,提供全面的网络安全功能。 它将网络和安全功能无缝集成,支持跨本地、云、混合和融合 IT/OT/IoT 基础设施环境的统一管理。 FortiOS 7.6 版本引入了生成式人工智能助手、数据保护、托管服务和单一代理等新功能,进一步增强了其安全性和性能。

缘梦未来的博客 1841

linux gsoap 教程,Linux 平台gsoap简单使用

gsoap下载地址:https://sourceforge.net/projects/gsoap2/?source=typ_redirect1、编译生成soapcpp2下载解压之后 跳转gsoap-2.8 目录,执行./configurecd gsoap/ 执行 make会在src目录下生成soapcpp22、创建test目录新建add.h 头文件 内容如下int ns2__add( int n...

weixin_36340890的博客 583

Jetson Nano之CSI摄像头操作方法

jetson端csi摄像头的应用方法

ZONGXP的博客 1万+

linux gsoap 教程,gsoap使用方法及心得----gSoap Linux

对gsoap的简单介绍,请自己参阅http://gsoap2.sourceforge.net/下载相应的包,主要有2个工具和源代码:wsdl2h -o outfile.h infile.wsdl 实现wsdl文件到h文件的数据映射soapcpp2 -c outfile.h生成相应的底层通信stub,strech程序下面这个简单的例子实现的是在客户端输入2个数字,然后远程调用服务端的加法函数,最后返...

weixin_36297381的博客 575

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VS2010使用c++、gSOAP创建WebService 图文教程

VS2010使用c++、gSOAP创建的WebService 图文教程环境操作系统:Windows 7gsoap版本:2.8.32C++编译器/开发环境:Visual Studio 2010gSOAP是什么gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类

无知人生,记录点滴 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

gsoap源代码及实例教程:构建高效Web服务的秘密武器

gsoap源代码及实例教程:构建高效Web服务的秘密武器 【下载地址】gsoap源代码及实例教程 探索gsoap的世界,轻松构建Web服务!本资源提供gsoap-2.8的完整源代码,附有详尽的服务器和客户端实例代码,助您快速上手。自动生成服务客户端代码的批处理程序,让开发过程更加高效。无论您是初学者还是经验丰富的开发者,...

gitblog_06746的博客 347

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

linux gsoap 开发教程,gsoap使用笔记

gsoap入门1 使用gsoap搭建web service参考了参考文档[2]中的介绍,有一点点修改。1.1 编译calc客户端根据wsdl文件生成gsoap用的头文件wsdl2h -o calc.h http://www.genivia.com/calc.wsdl如果用我们自己搭建的webserver,需要修改头文件中的如下代码,把port字段修改为自己的webservice的url。//gso...

weixin_33417371的博客 842

VS2010使用c++、gSOAP调用WebService 图文教程

上篇写了“VS2010使用c++、gSOAP创建的WebService 图文教程”,有创建就要有调用,这里就讲一下相同语言框架技术下的调用功能。一、下载WSDL文件上篇中 “五、启动WebService并测试》5、打开浏览器,输入你的IP:端口号/itoa?wsdl 访问看看吧,正常的话应该显示“itoa.wsdl”文件的内容”我们知道对方提供的WebService地址,理论上就可以通过以上方式取

无知人生,记录点滴 1万+

gsoap源代码及实例教程

gsoap源代码及实例教程 【下载地址】gsoap源代码及实例教程 探索gsoap的世界,轻松构建Web服务!本资源提供gsoap-2.8的完整源代码,附有详尽的服务器和客户端实例代码,助您快速上手。自动生成服务客户端代码的批处理程序,让开发过程更加高效。无论您是初学者还是经验丰富的开发者,都能通过我们提供的教程,掌握从...

gitblog_06753的博客 760

gsoap创建webservice服务简单教程

WebService、soap、gsoap WebService:就是一个应用程序,它向外界暴露出一个可以通过web进行调用的API,是分布式的服务组件。本质上就是要以标准的形式实现企业内外各个不同服务系统之间的互调和集成。 soap:简单对象访问协议,是一种轻量的、简单的、基于 XML 的协议,它被设计成在WEB 上交换结构化的和固化的信息。从这里的概念可以看得出来,soap是一个基于x

XXX的专栏 1万+

linux gsoap 教程,linux gsoap使用

安装:yum install flex bison其中服务器端分两种模式1、cgi2、后台程序,类似http服务器。前者简单,性能稍差。后者涉及多线程编程,稍微复杂。本文采用的例子为calc++中的,除了修改.h文件,其它文件不用修改。http开启cgi配置方法:ScriptAlias /cgi-bin/ "/data/html/cgi-bin/"AllowOverride NoneOptions...

weixin_39562340的博客 129
上一篇: gsoap简单实例
下一篇: 一个很好的makefile教程1
beyondchx
博客等级 码龄19年 238粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值