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

[C++]VS2013使用gsoap创建WebService步骤 一、环境 操作系统:Windows 7 gsoap版本:2.8.74 C++编辑器/IED开发环境:Visuval Studio 2013 二、Gsoap工具简介: Gsoap编译工具提供了一个SOAP/XML关于C/C++语言的实现,从而让C/C++实现基于WebService协议服务应用(客户端或服务端)的工作变得轻松了很多。绝大多数的C++Web 工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户必须改变程序结构来适应相关的类库。与之相反,gSOAP利用编译器技术提. 阅读详情

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

环境

操作系统:Windows 7
gsoap版本:2.8.32
C++编译器/开发环境:Visual Studio 2010

gSOAP是什么

gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工作变得轻松了很多。绝大多数的C++web服务工具包提供一组API函数类库来处理特定的SOAP数据结构,这样就使得用户必须改变程序结构来适应相关的类库。与之相反,gSOAP利用编译器技术提供了一组透明化的SOAP API,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来。

下载gSOAP工具包

http://120.52.73.49/jaist.dl.sourceforge.net/project/gsoap2/gSOAP/gsoap_2.8.32.zip

gSOAP Toolkit
解压后把下面两个文件复制到“C:\Windows”目录下,或者添加环境变量,这 样就可以在任何位置执行命令:

soapcpp2.exe

wsdl2h.exe

一、编写一个头文件

文件名:itoa.h

//gsoap ns service name: itoa
//gsoap ns service namespace: http://localhost/itoa.wsdl
//gsoap ns service location: http://localhost
//gsoap ns service executable: itoa.cgi
//gsoap ns service encoding: encoded
//gsoap ns schema namespace: urn:itoa

int ns__itoa(int i, char **a);

二、生成wsdl和服务端代码

打开CMD命令行,切换目录到“itoa.h”文件所在目录,执行命令:

soapcpp2 -S -I C:\gSOAP\gsoap-2.8\gsoap\import itoa.h

执行完成后,会在文件夹下面生成以下文件:


经测试直接使用“soapcpp2 -S itoa.h”也是可以的;

三、创建项目

1、打开VS2010,文件》新建》项目


2、左侧模板中选择Visual c++,右侧选择 Win32 控制台应用程序,输入项目名称,选择保存位置,勾选“为解决方案创建目录”,确定


3、下一步


4、取消“预编译头”的选中状态,完成


四、配置编译

1、打开项目文件目录


2、将第二步生成的代码复制到项目目录下

3、添加文件到项目


4、选择要添加到项目的文件

这里没有列全,有几个文件(stdsoap2.h,stdsoap2.cpp)是需要从gSOAP的源码目录复制过来的

注意:并不是要把所有文件都添加到项目里!


5、替换“itoaServer.cpp”文件的内容,使用以下代码:

// itoaServer.cpp : 定义控制台应用程序的入口点。
//
#include "soapH.h"
#include <windows.h>
#include "itoa.nsmap"

#define BACKLOG (100)    /* Max. request backlog */
DWORD WINAPI process_request(LPVOID*);
int http_get(struct soap * soap);

int main(int argc, char **argv) {
	struct soap soap;
	struct soap *tsoap;
	const char* fmt = "accepts socket %d connection from IP %d.%d.%d.%d\n";

	soap_init(&soap);

	if ( argc < 2 ) {
		soap_serve(&soap);
		soap_destroy(&soap);
		soap_end(&soap);
	}
	else {
		soap.send_timeout = 60;
		soap.recv_timeout = 60;
		soap.accept_timeout = 3600;
		soap.max_keep_alive = 100;

		soap.fget = http_get;

		DWORD tid;
		HANDLE hThread;

		int port = atoi(argv[1]); // first command-line arg is port
		SOAP_SOCKET m, s;

		m = soap_bind(&soap, NULL, port, BACKLOG);
		if ( !soap_valid_socket(m) ) exit(1);

		printf("Socket connection successful %d\n", m);
		for ( ; ; ) {
			s = soap_accept(&soap);
			if ( !soap_valid_socket(s) ) {
				if ( soap.errnum ) {
					soap_print_fault(&soap, stderr);
					exit(1);
				}

				printf("server timed out\n");
				break;
			}

			printf(fmt, s, (soap.ip>>24)&0xFF, (soap.ip>>16)&0xFF, (soap.ip>>8)&0xFF, soap.ip&0xFF);

			tsoap = soap_copy(&soap); // make a safe copy
			if ( !tsoap ) break;

			hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)process_request, tsoap, 0, &tid);
			if ( hThread == NULL ) {
				printf("can not create a thread for SOAP request processing.\n");
				exit(-1);
			}
		}
	}

	soap_done(&soap);
	return 0;
}

DWORD WINAPI process_request(LPVOID* soap) {
	soap_serve((struct soap*)soap);
	soap_destroy((struct soap*)soap);
	soap_end((struct soap*)soap);
	soap_done((struct soap*)soap);
	free(soap);
	return 0;
}

// 服务消息的实现代码
int ns__itoa(struct soap *soap, int i, char **a) 
{ 
	*a = (char*)soap_malloc(soap, 11); 
	sprintf(*a, "%d", i); 
	return SOAP_OK; 
}

int http_get(struct soap * soap) {
	FILE *fd = NULL;

	printf("call http_get.\n");
	char *s = strchr(soap->path, '?');
	if ( !s || strcmp(s, "?wsdl") ) return SOAP_GET_METHOD;

	fd = fopen("itoa.wsdl", "rb");
	if ( !fd ) return 404;

	soap->http_content = "text/xml";
	soap_response(soap, SOAP_FILE);

	for ( ; ; ) {
		size_t r = fread(soap->tmpbuf, 1, sizeof(soap->tmpbuf), fd);
		if ( !r ) break;
		if ( soap_send_raw(soap, soap->tmpbuf, r) ) break;
	}

	fclose(fd);
	soap_end_send(soap);

	return SOAP_OK;
}
6、编译生成,在项目名称上单击鼠标右键,选择重新生成

选择重新生成的好处是避免之前的生成错误影响本次生成的结果

7、生成成功后,从项目目录下将“itoa.wsdl”文件复制到输出目录


五、启动WebService并测试

1、打开CMD命令提示符

2、切换目录到生成输入目录

3、执行命令:itoaServer.exe 8087

后面的端口是可以自己定义的,你想用什么就输入什么,只要是未占用的,不是其它协议/服务常用的;


4、允许访问


5、打开浏览器,输入你的IP:端口号/itoa?wsdl 访问看看吧,正常的话应该显示“itoa.wsdl”文件的内容


2016-05-29更新

1、更新文件:itoa.h,添加了一个函数

//gsoap ns service name: itoa
//gsoap ns service protocol: SOAP
//gsoap ns service style: rpc
//gsoap ns service namespace: http://localhost:8087/itoa?wsdl 
//gsoap ns service location: http://localhost:8087
//gsoap ns service encoding: encoded  
//gsoap ns schema namespace: urn:itoa
  
int ns__itoa(int i, char **a);
int ns__add(double a, double b, double& result);
2、更新文件:itoaServer.cpp,加入代码:
//server端的实现函数与itoa.h中声明的函数相同,但是多了一个当前的soap连接的参数
int ns__add(struct soap *soap, double a, double b, double& result)
{
    result = a + b;
    return 0;
}
3、ns与ns2的区别

目前只是发现如果头文件件中的函数名使用ns2开头的话(例如:ns2_itoa),那么生成的WSDL文件名就是“ns2.wsdl”,时间有限,还没有深入去研究;另外在官方用户手册中也会看到“//gsoap ns2 service”这样的,也没有尝试;

结束语

别人如果想访问你的WebService,必须能够拿到你的 wsdl 文件(本例中为:itoa.wsdl)才行,还有就是你的WebService运行的服务器IP及使用的端口。

这里只讲了如何用c++,gSOAP开发一个WebService供别人调用,以后再讲讲如何调用的吧。

相关源码下载:http://download.youkuaiyun.com/detail/testcs_dn/9528394

下一篇:VS2010使用c++、gSOAP调用WebService 图文教程


参考:

http://www.genivia.com/products.html

http://www.genivia.com/doc/soapdoc2.html

http://www.cppblog.com/qiujian5628/archive/2008/06/19/54019.html

http://www.cppblog.com/qiujian5628/archive/2008/09/16/61945.html



VS2010使用c++、gSOAP创建的WebService 源码 VS2010使用c++、gSOAP创建的WebService 源码 参考:http://blog.youkuaiyun.com/testcs_dn/article/details/51463367 立即下载

相关推荐

在vs2010下使用C++调用webserver接口

在vs2010下使用C++调用webserver接口,实现在C++上也可以调用wenserver的接口。并解决了中文传输乱码的问题。

VS2010 创建WebSerive程序

Visual Studio 2010默认采用的框架为.NET Framework4,在这个框架中已找不到直接创建WebService的模板方式了。但VS2010可以创建WebService是毋庸置疑的,那么怎么在VS2010中创建WebService呢,请看下面为您提供的两种方法,方法已经本人测试,可以放心使用! 方法一:.NET Framework4.0框架下,依然可以创建...

duoerbasilu 172

RK3588+TRL8367s 四网口千兆交换机配置与优化实战

本文详细介绍了基于RK3588高性能SoC与TRL8367s千兆交换芯片构建四网口交换机的完整实战流程。内容涵盖硬件连接、设备树配置、内核驱动加载、性能优化及常见问题排查,重点解析了RGMII时序调试、DSA架构配置等关键步骤,为嵌入式网络设备开发提供实用指南。

weixin_29266647的博客 674

VS2010 c#创建及调用Webservice

VS2010创建Webservice程序    在Visual Studio 2010中已经找不到直接创建WebService的模板方式了,但下面的方法可心实现:    在 Visual Studio 2010 的新建 Web 应用程序或者 Web 网站窗口中,如果你选择 .NET 4.0,会发现缺少了 ASP.NET Web Services 模板。你可能会怀疑 VS 2010

欢迎光临Andy511823558的空间 5499

基于carsim与Simulink联合仿真的车辆换道轨迹规划与轨迹跟踪模型

PID_反步控制_滑膜控制三种四旋翼无人机轨迹跟踪控制算法仿真 附带对应的说明文档,提供建模过程与仿真结果文献(英文)➕PPT 描述:采用的同一种参考轨迹,都是三维仿真 三种控制方法: [1]PID控制、[2]反步控制、[3]滑膜控制(三个仿真模型) 每个仿真均应用了同一种轨迹路径,直接运行即可出三维图,可以实现四旋翼无人机轨迹的跟踪

2501_90804007的博客 1083

MATLAB对pcap文件抓包的读取

应用范围 常用的雷达信号,无线网通信信号的格式大多为pcap、wj文件,这里记录一下MATLAB读取pcap文件的方法,具体处理过程及读取协议针对不同的雷达有不同的处理方式,在这里不做说明。 程序 clc;clear;close all; %% 文件位置 filename= 'E:\File\JOB\JOB_1\data.pcap'; fid = fopen(filename,'r'); % 打开包 tmpPack = fread(fid,1350); % 只读前1350个数 读到

诗酒趁年华的博客 3579

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

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

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

团结引擎+OpenHarmony 2实战篇:从零构建鸿蒙应用开发环境

本文详细介绍了如何从零开始构建鸿蒙应用开发环境,重点讲解了团结引擎与OpenHarmony 2的实战配置步骤。内容包括DevEco Studio安装、OpenHarmony SDK配置、团结引擎集成及项目创建等关键环节,帮助开发者快速搭建高效的开发环境,提升鸿蒙应用开发效率。

weixin_29294395的博客 264

VC++ 创建和调用WebService 图文教程 相关资料等

VS2010使用c++、gSOAP创建WebService 图文教程  http://blog.youkuaiyun.com/testcs_dn/article/details/51463367  VS2010使用c++、gSOAP调用WebService 图文教程  http://blog.youkuaiyun.com/testcs_dn/article/details/51526051

thanklife的专栏 1023

JavaFX - 动画

JavaFX 动画

思你日度难眠 1603

2024最新超详细无痛安装PyTorch,包括下载地址、环境配置与各种避坑指南

PyTorch更新很快,2024最新下载安装经验贴,包括anaconda+CUDA+cuDNN+PyTorch四部分的下载和安装。文章详细介绍了下载地址、环境配置、虚拟环境建立的问题,还温馨提示了各种闭坑指南。有需要的友友快过来康康!

qq_43596278的博客 11万+

mysql调用wsdl_调用wsdl

十一、用工具生成代码1、 用Axis提供的WSDL2java工具类生成代码,命令如下:C:\SoftWare\tomcat-5.0.28\tomcat-5.0.28\webapps\AxisWebService\WEB-INF>java -Djava.ext.dirs=lib org.apache.axis....文章嗯哼99252017-11-22551浏览量WSRP调用中的一些问题1、在...

weixin_42510608的博客 303

ROS 2在自动驾驶中的应用:感知节点开发

ROS 2在自动驾驶中的应用:感知节点开发 ,人工智能,计算机视觉,大模型,AI,本文围绕ROS 2在自动驾驶感知节点开发展开,介绍了ROS 2基础、感知节点开发流程,包括环境搭建、代码编写等,还阐述了常用传感器感知节点开发、多传感器融合,以及测试调试、性能优化、部署集成等内容,分析了开发面临的挑战与未来趋势,为相关开发提供了全面指导,涉及简单代码示例和概念解释。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

VSCode开发gsoap项目中解决undefined reference

前提 使用Win10,Mingw64,VSCode作为开发工具 具体代码生成参考使用gSOAP生成Web Services框架代码,本文不再详述 项目最终结构 |--.vscode |--|--c_cpp_properties.json # 配置引入依赖 |--|--launch.json # 配置启动 |--|--settings.json # 全局配置 |--|--tasks.json # 配置任务 |--main.c # 程序主入口 |--MobileCodeWSSoap.nsmap |--soa

Wilson的博客 600

LLaMA Factory多卡微调的实战教程(持续更新)

本文主要介绍了LLaMA Factory多卡微调的实战教程(持续更新),希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 模型选型与下载 2.4 配置多卡环境 3. 运行代码 3.1 构建训练数据 3.2 修改配置文件 3.3 微调 3.3.1 zero3微调 3.3.2 启动API 3.3.3 模型测试

herosunly的博客 25万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用VS2010创建WebService 发布、测试

1 打开VS2010,菜单    文件->新建->项目 2 选择【ASP.net 空web应用程序】,将其命名为自己想的工程名称。 发布、测试" name="image_operate_46531426760762079" alt="使用VS2010创建WebService 发布、测试" src="http://s6.sinaimg.cn/mw690/001hnO0qzy6QP4xq7zf25

merin_peng的博客 1774

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

使用vs2010创建、发布、部署、调用 WebService

原文地址:使用vs2010创建、发布、部署、调用WebService作者:吴超 一 使用vs2010创建 WebService 1 打开VS2010,菜单文件->新建->项目2 选择 其它语言--Visual C# --Web--ASP.net 空web应用程序,给个名称myWebApplication ,点确定。3 右键点击解决方案下自己的项目myWebAppli...

weixin_30348519的博客 632

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VS2010Webservice项目开发实例

<br />因为和VS2005存在很大差异,本文主要讲述一个简单的VS2010开发和测试Webservice项目.<br />主要流程为:<br />1.打开VS2010<br />2.新建立C#空白解决方案<br />3.添加新项目,选择左侧"已安装的模板"--"Visual C#"--"WCF",选择中间的"WCF 服务应用程序"--输入项目名称"WcfService1".新建完成后,打开项目中的Service1.svc文件,查看代码,在末尾添加两个函数.HelloWorld()和Add( int  a

xqf222的专栏 1万+

.NET使用VS2010开发Web Service

Web Service是一个面向服务的架构(SOA),不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。基于.NET平台,可以使用Visual Studio来开发Web Service。不同于Java平台,需要使用开源组件(Axis2、CXF等),微软直接在Visual Stuido里集成了开发Web Service的功能,

渴望,就奋力追寻... 3336

VS2010如何创建WebService项目

VS2010如何创建WebService项目 1、步骤一:打开VS2010——》选择新建项目。 2、步骤二:选择ASP.NET WEB 引用程序,将项目名改为自己想要的名称,最后点击确定。 3、新建WEB文件:右击项目名称——》添加——》新建项。 4、选择WEB服务:选择WEB——》选中WEB服务——》修改文件名称——》点击确定。 5、完成创建。 ...

weixin_44843936的博客 2041

Visual Studio2010保姆式安装教程(VS2010 旗舰版),以及如何运行第一个C语言程序,超详细

Visual Studio2010保姆式安装教程(VS2010 旗舰版),以及如何运行第一个C语言程序,超详细

伯努利 14万+

vs2010 c#添加webservice服务并使用soapui测试

1.环境win7 64位,vs2010 2.新建一个asp.net web应用程序 3.右键项目添加一个web服务 4.程序本来就有一个helloworld方法,现在添加一个自定义的方法,,如下CarMoveRequest [WebMethod] public Car CarMoveRequest(string Name, int X, int Y ) ...

openCpu 4008
上一篇: Bluemix中的Apache Spark数据分析服务入门
下一篇: 人力资源管理七大问题
微wx笑
微wx笑 优质创作者: Java技术领域 优质创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄18年 1万+粉丝 1004原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值