linux gsoap 用法
linux gsoap 用法
gSOAP 是一个用于开发 Web 服务和 SOAP 客户端/服务器应用程序的开源工具包。它可以让开发者通过创建 C/C++ 代码来构建基于 SOAP 的 Web
服务和客户端。
在 Linux 上使用 gSOAP,你需要遵循以下步骤:
1. 下载 gSOAP 工具包:
- 前往 gSOAP 官方网站( "gSOAP Toolkit" 下载最新版本的 gSOAP 工具包。
- 解压下载的压缩包。
2. 编写服务定义文件(.wsdl 文件):
- 使用你喜欢的文本编辑器,编写一个包含要实现的 Web 服务的定义的 .wsdl 文件。这个文件描述了服务的数据类型、操作和消息。
3. 生成源代码:
- 打开终端,进入 gSOAP 工具包的解压目录。
- 运行命令 `./soapcpp2 -C -I path_to_gsoap_toolkit your_service.wsdl`,其中 `path_to_gsoap_toolkit` 是 gSOAP 工具包的路径,`your_service.wsdl` 是你编写的 .wsdl 文件的路径。
- 这将使用 gSOAP 工具根据你的 .wsdl 文件生成 C/C++ 源代码。
4. 实现 Web 服务:
- 在生成的源代码中,找到 `your_serviceService.cpp` 文件。
- 在这个文件中,你可以实现 Web 服务的操作。你需要编辑操作的函数实现,处理接收到的请求,并返回响应。
5. 编译生成的源代码:
- 在终端中,使用适当的编译器(如 gcc)编译生成的源代码。
- 运行命令 `gcc -o your_service your_serviceService.cpp soapC.cpp
soapServer.cpp stdsoap2.cpp -lgsoap++`,其中 `your_service` 是生成的可执行文件名。
- 如果编译成功,将生成一个可执行文件。
6. 启动 Web 服务:
- 运行命令 `./your_service` 来启动 Web 服务。默认情况下,它监听在本地主机上的端口。
现在,你已经成功在 Linux 上使用 gSOAP 创建和运行 Web 服务了。你可以使用 SOAP 客户端与该服务进行通信,或者在源代码中远程调用该服务。
基于gSOAP工具实现的通信机房动环监控B接口协议测试工具
基于gSOAP工具实现的通信机房动环监控B接口协议测试工具
摘要:介绍了借助gSOAP开发工具,搭建通信机房中动环监控系统B接口协议测试工具的方法和常见问题。在B接口协议测试过程中,协议测试工具需要与监控单元进行通信,对监控单元指令反馈和主动上送数据进行解析和判断,从而验证监控单元的北向通信是否满足标准化要求。gSOAP工具功能独立,使用便捷,可以通过简单配置,完成B接口协议测试工具所需完整功能。功能包括接口服务的发布、服务调用响应以及下发指令,获取指令反馈等。同时,协议测试过程中的定制化的需求,都可以通过gSOAP工具进行配置来满足和解决。
关键词:gSOAP C++ ;动环监控;B接口协议;协议测试
1.概述
1.1.B接口通信协议
通信行业机房的动环监控系统中,监控中心(上位机)和监控单元(下位机)之间的通信协议,被称为B接口通信协议。各家通信运营商使用的B接口通信协议大多采用Web service技术来实现不同平台之间数据通信,即监控单元和监控中心均提供Web service接口服务。双方可互相调用对方发布的接口服务,实现双向通信[1]。
Web service服务,使用了“简单对象访问协议”(SOAP)和“可扩展标记化语言”(XML)两种技术[2],统一规范传输内容的格式,实现了在不同编程实现语言、不同操作系统之间完成数据共享或功能调用。其中,XML格式文本作为具体功能调用、数据传输的载体,需要按照SOAP通信协议的要求进行格式化封装。
经过SOAP协议封装后的报文内容,可以以HTTP协议为基础进行传输,也可基于其他如FTP、SMTP等传输协议完成协议报文的传输。在通信行业动环监控系统的B接口协议规范要求中,SOAP报文都是基于HTTP协议进行内容传输的,即在SOAP报文前需增加HTTP协议头部信息。并且,协议规范中说明,监控中心及监控单元发布的接口服务只包含一个方法,通过调用该方法传入不同内容的字符串来实现多种监控功能。
使用gsoap进行webservice开发总结
使用gSOAP进行Webservice开发总结
1. 概述
Web service是创建可互操作的分布式应用程序的新平台。Web service 的主要目标是跨平台的可互操作性。为了达到这一目标,Web service 是完全基于XML、XSD等独立于平台、独立于软件供应商的标准的。
Web service在应用程序跨平台和跨网络进行通信的时候是非常有用的。Web service适用于应用程序集成、B2B集成、代码和数据重用,以及通过Web进行客户端和服务器的通信的场合。
南京内容与资源管理中心需要为第三方提供DNA识别的接口,由于第三方可能位于不同的局域网中,运行于不同的平台,以及第三方形式多样化,为此提供一种通用的接口至关重要。鉴于Web service在跨平台,跨网络方面的出色表现,南京内容与资源管理中心需要采用Web service为第三方提供DNA识别接口。
南京内容与资源管理中心采用C/C++ 实现,如何快速的实现Web service接口呢?开源项目gsoap为此提供了很好的解决方案。
2. gSOAP介绍
gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于 gSOAP 具有相当不错的兼容性,通过gSOAP,我们就可以调用由Java, .Net, Delhpi, PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。
gSOAP的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构,反之亦然。这样,只用一组简单的API就将用户从SOAP细节实现工作中解脱了出来,可以专注与应用程序逻辑的实现工作了。gSOAP编译器可以集成C/C++和Fortran代码(通过一个Fortran到C的接口),嵌入式系统,其他SOAP程序提供的实时软件的资源和信息;可以跨越多个操作系统,语言环境以及在防火墙后的不同组织。
gSOAP简单构建WebService应用
1 gSOAP快速简单应用
(v1.3)
[摘要]
先应用后学习,利用一个简单的例子演示gSOAP的基本使用。gSOAP可以实现WebService简单通信,通过一个简单的加法扩展,展示如果是数值怎么通信,如果是字符怎么通信,如果是结构类型怎么通信。
[阅读建议]
这是一个好用不好学的技术,如果不了解C++内容建议放弃,如果实在没有耐心听原理,建议还是放弃。该说明不能适用其他技术指导和借鉴,因为只有一个功能,建议读者根据情况学习。
[使用声明]
本程序只是为了学习使用,用于提高程序设计技能而编制。读者可以原封不动或经过改造使用。禁止对本程序进行法律禁止或违反公共道德的改造。本程序没有任何保证,对本程序可能引起的损害,编制者不负任何责任。
gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户必须改变程序结构来适应相关的类库。与之相反,gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。SOAP是一种可以让机器与机器之间进行通信的技术。
因为是要使用到第三方工具生成客户端和服务端文件,这里边就有一个制作工艺。
制作工艺
下载最新的gSOAP文件,解压后在bin目录中找到Win32文件夹,将其中这两个文件 2 放到服务端的include文件夹里,同理客户端也是。
假设在include文件夹里边,头文件为add.h,是一个简单的加法程序,这个地方需要说明一下,经过工具生成的文件,就是就是对add.h文件重新组装,在实际项目应用中可以不用这个add.h文件。
多数有经验的程序员,一般都是是将头文件在服务端保存,客户端需要写一个脚本,从服务端复制一份,在生成客户端文件。
用gSOAP调用Web Services
用gSOAP调用Web Services
1、配置gSOAP
从/project/showfiles.php?group_id=52781
下载gSOAP,解压后在gsoap\bin\win32里找到wsdl2h.exe和soapcpp2.exe程序。通过这两个程序可以生成客户端需要的C/C++文件。这两个程序的使用方法:
wsdl2h.exe: 编译wsdl文件生成c/c++头文件
-o 文件名,指定输出头文件
-n 名空间前缀 代替默认的ns
-c 产生纯C代码,否则是C++代码
-s 不要使用STL代码
-t 文件名,指定type map文件,默认为typemap.dat
-e 禁止为enum成员加上名空间前缀 soapcpp2.exe: gSOAP编译器,编译头文件生成服务器和客户端都需要的c/c++文件
(如果使用STL,需要从压缩包里找到stlvector.h放到soapcpp2.exe目录下,否则运行失败)
-C 仅生成客户端代码
-S 仅生成服务器端代码
-L 不要产生soapClientLib.c和soapServerLib.c文件
-c 产生纯C代码,否则是C++代码(与头文件有关)
-I 指定import路径(见上文)
-x 不要产生XML示例文件
-i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)
我写了个批处理:
wsdl2h -o xxxService.h "WSDL文件URL"
soapcpp2 -C xxxService.h
如果是asmx,可以在URL后加 "?WSDL" 来获取WSDL文件,它是一个XML,用来描述接口,它是与语言无关的,类似COM的IDL文件。
2、创建VC工程,把生成的文件拷到工程目录
生成的文件有:
soapStub.h 从输入 Header 文件生成的经过修改且带标注的 Header 文件
基于gSOAP的WebService开发指导说明文档
基于gSOAP的WebService
开发指导说明书
1 简介
1.1 目的
本文通过给出gSOAP库的基本使用样例,帮助开发人员进行WebService相关的开发
1.2 范围
本文只包含gSOAP库C++版本的基本使用样例,不包含其他高级使用或C版本的使用方式
1.3 名词解释
1.4 参考资料
gSOAP 2.8.18
User Guide Robert van Engelen
GENIVIA INC
Aug 24, 2014
/~engelen/soapdoc2.html#tth_sEc7.2.7
2 准备工作
2.1 gSOAP库
很显然,要想基于gSOAP库开发WebService应用,你需要首先获取gSOAP库。
gSOAP库是一个开源库,你可以在以下网址进行下载:
/project/showfiles.php?group_id=52781
如果链接失效,也可以去一个介绍gSOAP的网站上查看最新下载地址:
/~engelen/soap.html 本文所用的版本为(soapcpp2):
下载下来以后解压缩,你会得到这么一个目录:
其中gsoap目录有以下结构:
注意这两个文件:stdsoap2.h和stdsoap2.cpp,我们编写gSOAP程序的时候是需要它们的。还要注意的是bin\win32目录下的两个可执行文件:soapcpp2.exe和wsdl2h.exe,目前我们只需要soapcpp2.exe。
也就是说,要使用gSOAP,我们需三个文件:
解压目录\gsoap-2.8\gsoap\ stdsoap2.h
解压目录\gsoap-2.8\gsoap\ stdsoap2.cpp
解压目录\gsoap-2.8\gsoap\bin\win32\ soapcpp2.exe 使用gSOAP不需要在程序中添加额外的库,而是要通过工具生成并包含额外的文件。接下来,我们通过一个实例去了解如何使用gSOAP提供的这三个文件。
gsoap restful 示例
文章标题:深度解析gsoap在Restful API中的示例应用
在当今的软件开发领域,Restful API已经成为了构建Web服务和移动应用程序的标准。而gsoap作为一种高效的工具和库,被广泛用于实现和部署Web服务和API。本文将深入探讨gsoap在Restful API中的示例应用,帮助读者更全面地理解这一技术。
1. gsoap简介
让我们简要介绍一下gsoap。gsoap是基于C/C++的开源工具,可用于开发和部署Web服务和客户端,支持SOAP和REST等Web服务协议。它提供了一种简单而强大的方法,帮助开发人员创建和使用Web服务。而在本文中,我们将集中讨论gsoap在Restful API中的应用示例。
2. Restful API概述
Restful API是一种基于Rest架构风格的API设计,它的核心理念是以资源为中心,通过HTTP协议进行通信。Restful API使用HTTP方法来操作资源,如GET、POST、PUT和DELETE等,同时采用JSON或XML等格式进行数据传输。它的设计简洁而高效,越来越受到开发者的青睐。
3. gsoap在Restful API中的示例应用
现在让我们深入探讨gsoap在Restful API中的示例应用。假设我们需要实现一个简单的Restful API,用于管理用户信息,包括查询用户、创建用户、更新用户和删除用户等操作。我们可以使用gsoap来实现这一目标。
我们需要定义接口描述语言(IDL),用于描述API的资源和方法。我们可以使用gsoap提供的工具来生成服务端和客户端的代码。通过生成的代码,我们可以轻松地实现Restful API的各种功能。
我们可以使用gsoap生成的代码来实现用户信息的查询功能。通过定义HTTP的GET方法和对应的URL,我们可以向服务器发送查询用户信息的请求,服务器接收到请求后,调用gsoap生成的代码来执行相应的操作,并将结果以JSON格式返回给客户端。
gsoap入门实例
gsoap⼊门实例
1. 环境
VS2008,gsoap_2.8,win7
2. 实例场景:在客户端输⼊⼀个字符串,然后传递给服务端计算字符串长度并返回给客户端(附加⼀些加减乘除法的实现);
3. 将..\gsoap-2.8\gsoap\bin\win32中的两个exe⽂件所在路径加⼊环境变量中,后⾯有⽤;
4. 新建⼀个⽂件夹,设计⼀个calculator.h⽂件,如下(前⾯⼏⾏的注释我也不知道有啥⽤)
1 //gsoap ns service name: add
2 //gsoap ns service namespace: http://localhost/add.wsdl
3 //gsoap ns service location: http://localhost
4 //gsoap ns service executable: add.cgi
5 //gsoap ns service encoding: encoded
6 //gsoap ns schema namespace: urn:add
7 int ns__add(int num1, int num2, int* result );
8 int ns__sub(int num1, int num2, int* result );
9 int ns__mult( int num1, int num2, int *result);
10 int ns__divid( int num1, int num2, int *result);
11 int ns__Hello(char* str,int *len);
5. 在该⽂件夹中打开cmd(⽅法ctrl+右键 --》在此处打开命令窗⼝),输⼊命令:soapcpp2.exe calculator.h
有关gsoap的命令⽤法⾃⾏百度;
6. 你会发现⽣成很多很多⽂件
7. 利⽤VS2008创建⼀个calServer的⼯程,将calculator.h add.nsmap soapC.cpp soapServer.cpp soapH.h soapStub.h放⼊该⼯程,并
如何在Linux上实现双因素认证
如何在Linux上实现双因素认证
双因素认证是一种保护账户安全的重要措施,它通过结合密码和其他验证方式,提高了账户的安全性。在Linux系统中,我们可以通过以下步骤来实现双因素认证。
第一步:安装所需组件
要在Linux系统上实现双因素认证,我们首先需要安装所需的组件。其中,最常用的组件是谷歌身份验证器(Google Authenticator)。可以通过运行以下命令来安装:
```
sudo apt-get install libpam-google-authenticator
```
安装完成后,我们可以开始进行配置和设置。
第二步:配置Google Authenticator
在安装完成后,我们需要为用户进行配置和设置谷歌身份验证器。
1. 打开终端,并以具有管理员权限的用户身份运行以下命令:
```
google-authenticator
``` 2. 在此过程中,你将会被要求回答一系列问题,你可以根据自己的需求进行设置。例如,你可以选择是否允许多个设备对一个账户进行验证,以及设置验证代码的过期时间等。
3. 一旦完成配置,你将会获得一个密钥和一个二维码。你可以将密钥保存在一个安全的地方,或者使用二维码扫描工具将其添加到你的移动设备上。
第三步:启用双因素认证
完成了配置和设置后,我们需要在Linux系统中启用双因素认证。
1. 打开终端,并以具有管理员权限的用户身份编辑PAM配置文件。可以使用以下命令:
```
sudo nano /etc/pam.d/sshd
```
2. 在文件中找到 `@include common-auth` 这一行,并在其上方添加以下内容:
```
auth required pam_google_authenticator.so
```
3. 保存并关闭文件。
第四步:重新启动SSHD服务 为了使更改生效,我们需要重新启动SSH服务。
1. 使用以下命令重新启动SSHD服务:
gsoap的wsdl文件
wsdl是通过gsoap自动生成的。 也就是说再没有wsdl文件的时候可以先定义xxxx.h文件,xxxx.h的定义里面要包括
//gsoap ns service name: severName 等项。然后通过soapcpp2.exe xxxx.h来生成wsdl文件等。
如果有可以利用的wsdl文件则可以先生成.h文件再生成soap依赖文件,如:soapStub.h等。
;;;;;;;;;;;;;;;;;;;;;
准备:
到/projects/gsoap2/files/下载gsoap最新版本,笔者写此文章时最新版本是gsoap_2.7.13.tar.gz,解压缩,笔者解压缩到了D:/software下。
Step1:创建要发布的C++头文件,指定服务操作(calcu.h)
在头文件中定义了三个操作:加、减和开方。参数a和b是输入型参数,result用来保存结果,返回值说明调用是否成功。为图方便,笔者将此文件建在gsoap
RPC编译器同一目录下,即D:/software/gsoap-2.7.13/gsoap/bin/win32,文件内容如下:
//gsoap ns service name: calc
//gsoap ns service style: rpc
//gsoap ns service namespace: /calc.wsdl
//gsoap ns service location: /calc.cgi
//gsoap ns schema namespace: urn:calc
int ns__add(double a, double b, double *result);
int ns__sub(double a, double b, double *result);
int ns__sqrt(double a, double *result);
说明:service name:提供的服务的名称。
gsoap 复杂结构应用
gsoap 复杂结构应用
2009-09-05 11:09
在使用c++实现webservice方面,gsoap无疑是一个比较好的选择。入门简单,提供强大的功能,开发人员仅需要关注业务实现,而无须注重其实现细节。
在做联通的一个项目时,使用了较多的gsoap技术,在此仅记录一个应用,实现复杂xml消息的c++实现。
1、写c++头文件,实现xml到c++代码的转换。(请求消息的xml格式如下所示)
可以看到此消息分为4层,第三层的中ACCTBOOKLIST为1...无穷个第四层结构体组成。
服务返回部分结构如下:
2、c++ 同文件实现如下:(example.h)
1)第四层消息结构封装
class NS2__synOnlineBalanceRequest_AcctBookList
{
public:
std::string* OPERATEFLAG;
std::string* ACCTBOOKID;
std::string* BALANCE;
std::string* EFFDATE;
std::string* EXPDATE;
};
2)第三层保证第四层不定数量出现封装
class NS2__synOnlineBalanceRequest_AcctBookList_Array
{ public:
NS2__synOnlineBalanceRequest_AcctBookList **__ptr;
int __size;
//__size 为第四层中消息的个数,"__"是gsoap的内定应用
};
3)第二层消息体结构封装
class NS1__synOnlineBalanceRequest_Req_Body
{
public:
std::string* SESSIONID;
std::string* ACCOUNT_ID;
