C++与Web接口对接

(1)wsdl.xml : 是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。他将Web服务描述定义为一组服务访问点,客户端能够经过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(相似远程过程调用)。WSDL首先对访问的操做和访问时使用的请求/响应消息进行抽象描述,而后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。相关的具体部署的服务访问点经过组合就成为抽象的Web服务。web

 一个WSDL文档一般包含7个重要的元素,即types( WebService用到的全部数据类型 )、importmessage( 指明一个操做所用到的数据类型。 )、portType WebService 全部提供的接口)、operation 服务中所支持的操做的抽象描述 )、binding 每一个端口定义消息格式和协议细节 )、service( 服务的访问路径)元素。这些元素嵌套在definitions元素中,definitions是WSDL文档的根元素。网络

这是我收缩多余节点以后的wsdl.xml,大概能够看到除import以外的元素,operation存在于portType和binding的内部子节点。架构

生成一个wsdl.xml,请参考http://blog.csdn.net/juxtapose/article/details/1779849app

关于wsdl.xml的了解不作过多介绍,若是要兴趣能够看http://blog.csdn.net/xiaobai20131118/article/details/34184773这篇博客函数

(2)gsoap-2.8:gSOAP编译工具提供了一个SOAP/XML 关于C/C++ 语言的实现,从而让C/C++语言开发web服务或客户端程序的工做变得轻松了不少。 gSOAP是一种跨平台的C和 C++软件开发工具包。生成C/C++的RPC代码(RPC:远程过程调用,它是一种经过网络从远程计算机程序上请求服务),XML数据绑定,对SOAP Web服务和其余应用造成高效的具体架构解析器,它们都受益于一个XML接口。 这个工具包提供了一个全面和透明的XML数据绑定解决方案,Autocoding节省大量开发时间来执行SOAP/XML Web服务中的C/C++。在网上能够下载到这个库,建议下载gsoap-2.8。工具

(3)addStdafx.vbs: 基于Visual Basic的脚本语言 .开发工具

Dim fso
Set fso = CreateObject("scripting.filesystemobject")
Set fdr=fso.GetFolder(".\")
Set subfdr=fdr.Files
For Each CppFile In subfdr
	If Right(CppFile.Name, 4) = ".cpp" Then
		Set batfile=fso.OpenTextFile(CppFile.Name)
		If not batfile.AtEndOfStream then
			txt=batfile.ReadAll
			txt="#include ""stdafx.h"""+ chr(10)+ txt
			Set batfile=fso.OpenTextFile(CppFile.Name,2)
			batfile.Write txt
			batfile.Close
		end if
	end if
next

(4)要使用wsdl.xml文档还须要一个CreateSoap.bat, bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。spa

@echo off

@rem ---------------------------------设置--------------------------------------
@rem 1.gSoap路径
set hhsoappath=E:\libs\gsoap-2.8\

@rem 2.WSDLL服务地址 多个地址或本地wsdl格式xml文件时用空格分开
set hhsoapwsdllpath=E:\WebServiceDlls\aaa\wsdl.xml

@rem 3.目标路径(将生成后的文件拷贝到此路径)
set hhdestpath=E:\test

@rem 4.生成的头文件名,通常不用改
set hhcreath=gsoap-http.h

@rem ---------------------------------设置--------------------------------------

@rem 拷文件
copy %hhsoappath%\gsoap\stdsoap2.h   stdsoap2.h
copy %hhsoappath%\gsoap\stdsoap2.cpp stdsoap2.cpp
copy %hhsoappath%\gsoap\bin\win32\soapcpp2.exe soapcpp2.exe
copy %hhsoappath%\gsoap\bin\win32\wsdl2h.exe wsdl2h.exe

@rem 调用wsdl2h程序
call wsdl2h.exe -I "%hhsoappath%gsoap\WS" -o %hhcreath% %hhsoapwsdllpath%

@rem 调用soapcpp2程序
call soapcpp2.exe -I "%hhsoappath%gsoap\import" %hhcreath%

call addStdafx.vbs

@rem 拷贝生成的文件
copy callUpload.h %hhdestpath%
copy soapH.h %hhdestpath%
copy soapStub.h %hhdestpath%
copy stdsoap2.h %hhdestpath%
copy soapC.cpp %hhdestpath%
copy soapClient.cpp %hhdestpath%
copy soapClientLib.cpp %hhdestpath%
copy soapServer.cpp %hhdestpath%
copy soapServerLib.cpp %hhdestpath%
copy stdsoap2.cpp %hhdestpath%
copy wsdl2h.exe %hhdestpath%
copy soapcpp2.exe %hhdestpath%
@rem nsmap文件名称不是固定的,须要生成后手动复制
copy IPmsWebServiceSoapBinding.nsmap %hhdestpath%
@echo off
set hhsoappath
set hhsoapwsdllpath
set hhcreath

@pause

使用时根据实际状况,修改1,2,3的路径。.net

(5)首先新建一个项目,而后双击CreateSoap.bat文件,把自动生成的.h,cpp,nsmap文件所有拷贝到新建的项目下就可使用了,soapStub.h里能够看到能够调用的全部函数。code

相关文章
相关标签/搜索