1、gsoap是什么?

The gSOAP toolkit is an open source C and C++ software development toolkit forSOAP/XML Web services and generic (non-SOAP)C/C++ XML data bindings. The toolkit analyzes WSDLs and XML schemas (separately or as a combined set) and maps the XML schema types and the SOAP messaging protocols to easy-to-use and efficient C and C++ code. It also supports exposing (legacy) C and C++ applications as SOAP/XML Web services by auto-generating XML serialization code and WSDL specifications. Or you can simply use it toautomatically convert XML to/from C and C++ data. The toolkit supports options to generate pure ANSI C or C++ with or without STL.

这是gsoap介绍的原文,简单来说,gsoap就是一个工具,这个工具能够做的事情就是自动从WSDL和XML文档生成C/C++代码,或者是逆向。这就是我所理解的gsoap。

记录下:

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服务的细节就可以实现一个客户端或服务端程序。
2、gsoap使用
gsoap通常带有两个工具: wsdl2h 和 soapcpp2。 wsdl2h主要是用来生成头文件的,而soapcpp2主要是利用wsdl2h生成的头文件来生成C文件或C++文件。
a、wsdl2h的使用
命令:  wsdl2h  【-】  -o  头文件名  wsdl文件名或者url
例    :  wsdl2h  -o  quote.h     http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl
Usage: wsdl2h  [-a] [-c] [-d] [-e] [-f] [-g] [-h] [-I path] [-j] [-l] [-m] [-n name] [-N name] [-p] [-q name] [-r proxyhost:port] [-s] [-t typemapfile.dat] [-u]
                                 [-v] [-w] [-x] [-y] [-z] [-o outfile.h] infile.wsdl infile.xsd   http://www... ...
 
     wsdl2h常用选项
            -o 文件名,指定输出头文件
-n 名空间前缀 代替默认的ns
-c 产生纯C代码,否则是C++代码
-s 不要使用STL代码
-t 文件名,指定type map文件,默认为typemap.dat
-e 禁止为enum成员加上名空间前缀

type map文件用于指定SOAP/XML中的类型与C/C++之间的转换规则,比如在wsmap.dat里写。

关于typemap.dat,在下载的gsoap中是有另外一个,叫:WS-typemap.dat。 如果有多个wsdl文档,建议使用这个。

wsdl2h针对多个文档: wsdl2h.exe  -sc  -t   WS-typemap.dat   -o   quote.h    a.wsdl  b.wsdl   c.wsdl

b、soapcpp2的使用

命令: soapcpp2  【】  头文件名 【-I】 import路径

例   :  soapcpp2   -L  -c  quote.h   -I  E:\gsoap-2.8\gsoap\import

soapcpp2常用选项

            -C  仅生成客户端代码
-S  仅生成服务端代码
-c   产生纯C代码,否则是C++代码
-L   不要产生soapClientLib.c和soapServerLib.c文件
-I    指定import路径
-x  不要产生XML示例文件
            -i   生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。
soapcpp2针对多个文档: soapcpp2  -L -c  quote.h   -I  E:\gsoap-2.8\gsoap\import
其实多个wsdl合并只需要在生成头文件的时候注意就可以了,源文件是通过头文件得到的。
附:  工具命令
wsdl2h
            Usage: wsdl2h   [-a] [-c] [-d] [-e] [-f] [-g] [-h] [-I path] [-j] [-l] [-m] [-n name] [-N name] [-p] [-q name] [-r proxyhost:port] [-s] [-t typemapfile.dat] [-u]
                                       [-v] [-w] [-x] [-y] [-z] [-o outfile.h] infile.wsdl infile.xsd  http://www... ...
-a                generate indexed struct names for local elements with anonymous types
                        -c                generate C source code
                        -d                use DOM to populate xs:any and xsd:anyType elements
                        -e                don't qualify enum names
                        -f                 generate flat C++ class hierarchy
                        -g                generate global top-level element declarations
                        -h                display help info
                        -Ipath          use path to find files
                        -j                 don't generate SOAP_ENV__Header and SOAP_ENV__Detail definitions
                        -l                 include license information in output
                        -m               use xsd.h module to import primitive types
                        -nname       use name as the base namespace prefix instead of 'ns'
                        -Nname      use name as the base namespace prefix for service namespaces
                        -ofile           output to file
                        -p                create polymorphic types with C++ inheritance with base xsd__anyType
                        -qname       use name for the C++ namespace for all service declarations
                        -rhost:port  /* ??? 暂没理解 */
                                connect via proxy host and port
                        -s                don't generate STL code (no std::string and no std::vector)
                        -tfile            use type map file instead of the default file typemap.dat
                        -u                don't generate unions
                        -v                verbose output
                        -w               always wrap response parameters in a response struct (<=1.1.4 behavior)
                        -x                don't generate _XML any/anyAttribute extensibility elements
                        -y                generate typedef synonyms for structs and enums
                        -z                generate pointer-based arrays for backward compatibility < gSOAP 2.7.6e
infile.wsdl     list of input sources (if none: use stdin)
soapcpp2
             Usage: soapcpp2 [-1|-2] [-C|-S] [-L] [-a] [-c] [-d path] [-e] [-h] [-i] [-I path;path;...] [-l] [-m] [-n] [-p name] [-s] [-t] [-v] [-w] [-x] [infile]
-1            generate SOAP 1.1 bindings
                        -2            generate SOAP 1.2 bindings
                        -C            generate client-side code only
                        -S            generate server-side code only
                        -L            don't generate soapClientLib/soapServerLib
                        -a            use value of SOAPAction HTTP header to dispatch method at server side
                        -c            generate C source code
                        -dpath     use path to save files
                        -e            generate SOAP RPC encoding style bindings
                        -h            display help info
                        -i             generate service proxies and objects inherited from soap struct
                        -Ipath      use path(s) for #import
                        -l             generate linkable modules (experimental)
                        -m           generate Matlab(tm) code for MEX compiler
                        -n            use service name to rename service functions and namespace table
                        -pname   save files with new prefix name instead of 'soap'
                        -s            generate deserialization code with strict XML validation checks
                        -t             generate code for fully xsi:type typed SOAP/XML messaging
                        -v            display version info
                        -w           don't generate WSDL and schema files
                        -x            don't generate sample XML message files
                       infile         header file to parse (or stdin)
参考:
http://blog.sina.com.cn/s/blog_4900f3fb0100j94p.html
http://gsoap2.sourceforge.net/
http://blog.csdn.net/Ocean2006/article/details/5490928

gsoap应用---利用gsoap工具生成代码相关推荐

  1. 5G NR学习理解系列——利用matlab工具生成5G NR信源

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 5G NR学习理解系列--利用matlab工具生成5G NR信源 前言 NR工具箱的使用 直接使用代码 前言 既然发现了4G LTE ...

  2. matlab patch 透明度,怎么利用Matlab工具生成带有透明度对象的矢量图

    从很早的版本开始MATLAB就支持对 patch.surface 等对象设定透明属性,有些示意图也必须使用透明的对象才能充分展示所要表达的含义.对透明对象支持最好的通用图片格式就是 .png 了,但是 ...

  3. LTE学习理解系列——利用matlab工具生成4G LTE信源

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LTE学习理解系列--利用matlab工具生成4G LTE信源 前言 LTE工具箱的使用 直接使用函数 生成信源的采样率 总结 前言 ...

  4. wsdl2java 工具下载_利用wsdl2java工具生成webservice的客户端代码

    1.JDK环境 2.下载apache-cxf发布包:http://cxf.apache.org/download.html 目前最新版本为3.2.6, 解压后如下: 解压发布包,设置CXF_HOME, ...

  5. wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码

    1.JDK环境 2.下载apache-cxf发布包:http://cxf.apache.org/download.html 目前最新版本为3.2.6, 解压后如下: 解压发布包,设置CXF_HOME, ...

  6. 利用SoapUI工具生成webservice客户端java代码

    一.下载和安装软件 1.SoapUI 5.3.0 2.axis-1_4(下载地址:https://archive.apache.org/dist/ws/axis/1_4/axis-bin-1_4.zi ...

  7. java逆向生成代码有哪些_利用mybatis逆向工程生成代码

    在做项目过程中,当面对很多表时,手动编写Mapper.xml.Mapper.java和pojo无疑是要人命,还容易出错,导致对数据库操作时各种异常.这就陷入了写bug,改bug的旋涡. 针对这一痛点, ...

  8. 利用keytool工具生成数字证书

    一.制作数字证书  因测试微信小程序, 腾讯要求使用 https协议,所以需要使用证书.使用jdk工具制作数字证书流程如下: 1.查看JDK是否安装,使用命令java -version 2.切换目录至 ...

  9. 利用ZXing工具生成二维码以及解析二维码

    今天突然想到二维码是如何存储信息的.于是就开始各种搜索,最终自己也利用Google的ZXing工具完成了一个生成二维码和解析二维码的简单程序. 一. 二维码生成原理(即工作原理) 二维码官方叫版本Ve ...

最新文章

  1. R 包 optparse 之命令行参数传递
  2. [MSSQL2012]LEAD函数
  3. 应用监控指标采集器 Prometheus 核心介绍
  4. 一起学nRF51xx 0 - 环境搭建
  5. 互联网时代IT系统的变革-硬件系统定制化发展
  6. 蓝桥杯 123 二分+打表
  7. 使用Genymotion模拟器
  8. Js+XML 操作 [ZT]
  9. Git使用教程:超详细、超傻瓜、超浅显、真正手把手教
  10. java 哈希表入门
  11. pcb设计入门02-PCB封装库
  12. julia常用矩阵函数_Julia语言入门
  13. php生成的apk无法安装,xapk怎么安装
  14. provisional headers are shown
  15. 实验5、D/A转换实验
  16. 哪个软件可以测试服装的衣服,测试男生穿什么衣服的软件:男生脸型测试软件...
  17. 生产力高于一切?我们为什么会对技术上瘾?
  18. Java程序设计(二)
  19. 华为海外15年,浮生一瞬间,我的退休告别贴
  20. mvdbos php spider,yemtao

热门文章

  1. PostgreSQL pgsql身份证格式校验,身份证格式提取api
  2. qlv视频转换器免费版_腾讯视频素材下载和转换教程
  3. DIY 大型FDM 3D打印机中遇到的问题和经验分享(1)
  4. 一种夸张的炒股计算方法
  5. 支付宝支付sdk解析
  6. ODB 入门介绍(二)
  7. STC89C52单片机串口通信以及代码演示
  8. 大学计算机基础报告总结,windows7实验报告总结.docx
  9. 前端代码调试:Webstorm调试js
  10. 头条限流是什么原因_今日头条限流吗 头条号限流是什么状态