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 立即下载

相关推荐

深度学习入门:使用CMSIS-NN在微控制器上部署模型的完整指南与Python Jupyter实践

CMSIS-NN是ARM为Cortex-M系列微控制器设计的神经网络库。它旨在提供一套高效、轻量级的神经网络API,使得开发者可以在资源受限的微控制器上运行深度学习模型。CMSIS-NN优化了各种常见的神经网络层,如卷积层、全连接层等,确保它们在微控制器上的运行效率。# 定义模型])# 编译模型# 训练模型这样,我们就得到了一个简单的手写数字识别模型。注意:为了简洁和清晰,本文中的代码可能不是最优的或最完整的实现。为了获得完整的项目和更多的优化技巧,请下载完整项目。

m0_57781768的博客 5884

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

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

qq_50868258的博客 3802

Ethercat学习-从站源码生成

移植平台GD32F450,从站芯片AX58100

西澳峰的博客 9220

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

ComfyUI新手必看:JoyCaption 2插件安装全流程(附百度网盘资源)

本文为ComfyUI新手提供了JoyCaption 2插件的完整安装与部署指南。详细介绍了从环境准备、插件获取、模型文件配置到核心节点使用的全流程,并重点解析了其集成的LLM反推模式,帮助用户高效实现从图片到精准提示词的转换。

mango的博客 303

WSL基础环境配置方案

通过以上步骤,您已经在 Windows 的 WSL 环境中成功搭建了一个完整的基础开发环境,包含 Docker、Kubernetes、Helm、kubectl、yq、Git 等工具。这套环境特别适用于在国内使用阿里云镜像服务部署和管理 Tekton,提升了开发和运维的效率和稳定性。

落魄书生的职业学习生涯 8876

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

银河麒麟V10+QT6.0中文输入法环境搭建全攻略(附镜像加速技巧)

本文提供了在银河麒麟V10操作系统上为QT6.0搭建中文输入法环境的完整实战指南。文章详细介绍了从系统准备、镜像源优化、QT6安装器获取与加速安装,到编译Fcitx5输入法插件依赖库、深度配置环境变量与项目的全流程。重点分享了使用国内镜像源加速安装的技巧,解决了国产化开发中QT应用无法输入中文的常见难题,旨在帮助开发者快速构建稳定高效的开发环境。

weixin_29204749的博客 393

gsoap教程

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

mr_lee 2813

国产机载操作系统天脉ACoreOS实战:从零搭建开发环境到应用移植

本文详细介绍了国产机载操作系统天脉ACoreOS的实战开发流程,从核心特性解析到开发环境搭建,再到VxWorks应用移植策略。重点阐述了其符合ARINC 653标准的时空分区架构如何保障高可靠性,并提供了从零创建分区工程、重构通信与任务代码的具体步骤,为开发者向这一国产化平台迁移提供了实用指南。

flower的专栏 633

CAS5和CAS6自定义异常提示消息

CAS自定义异常提示消息

weixin_42949219的博客 979

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

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1043、魔法咒语组合 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od

KJ.JK 282

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

gitblog_06746的博客 347

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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、付费专栏及课程。

余额充值