Robert van Engelen
GENIVIA INC
May 12, 2013
[This document is also available in PDF format (black and white only)]
Contents1 soap 简介1.1 入门指南 1.2 快速入门:开发Web服务客户端应用程序 1.3 快速入门:开发Web服务 1.4 快速入门:XML数据绑定1.5 1.5 功能概述 2 符号约定 3 GSOAP2.5版本(或更早)和2.4之间的差异 4 GSOAP2.1版本(或更早)和2.2之间的差异 5 GSOAP2.X 和 GSOAP2.x之间的差异 6 互通性 7 快速使用指南 7.1 如何创建 SOAP/XML 客户端 7.1.1 例子 7.1.2 XML Namespace 注意事项 7.1.3 例子 7.1.4 如何生成C + +客户端代理类(Proxy Classes) 7.1.5 XSD类型编码(Type Encoding )注意事项 7.1.6 例子 7.1.7 如何更改响应元素(Response Element)名称 7.1.8 例子 7.1.9 如何指定多个输出参数 7.1.10 例子 7.1.11 如何指定输出参数为 struct/class 复合数据类型 7.1.12 例子 7.1.13 如何指定匿名参数名称 7.1.14 如何指定没有输入参数的方法 7.1.15 如何指定没有输出参数方法 7.2 如何构建 SOAP/ XML Web服务 7.2.1 例子 7.2.2 使用 MSVC++ 创建(Builds) 7.2.3 如何创建一个独立的服务器(Stand-Alone Server) 7.2.4 如何创建一个多线程( Multi-Threaded )独立的服务器(Stand-Alone Service) 7.2.5 如何访问应用程序的数据服务方法 7.2.6 Web Service 实施方面(Implementation Aspects) 7.2.7 如何生成C + +服务器对象类 7.2.8 如何串连C + +服务器类在同一端口上接收消息 7.2.9 如何生成WSDL服务的描述 7.2.10 例子 7.2.11 如何让客户端使用服务上的功能 7.3 异步单向(Asynchronous One-Way)消息传递 7.4 通过HTTP实现的同步单向(Synchronous One-Way)消息传递 7.5 如何使用 SOAP XML数据绑定序列化和反序列化来保存和加载应用程序的数据 7.5.1 使用wsdl2h 创建XSD(XML Schema)与C + +映射 7.5.2 使用soapcpp2创建C/C++ 与 XSD(XML Schema)映射 7.5.3 7.5.4 从XML反序列换 C/C++ 数据 7.5.5 例子 7.5.6 序列化和反序列化类的实例流 7.5.7 如何给省略的数据指定默认值 8 wsdl2h WSDL和XML Schema import 元素 8.1 wsdl2h工具选项 8.2 使用typemap.dat文件定制数据绑定 9 soapcpp2编译器和代码生成器 9.1 soapcpp2 工具选项 9.2 SOAP1.1与SOAP1.2和动态切换 9.3 soapdefs.h 头文件 9.4 如何使用#module模块指令创建模块和类库 9.5 如何使用#import指令 9.6 如何使用#include和#define 指令 9.7 使用soapcpp2工具编译一个SOAP/ XML的客户端应用程序 9.8 使用soapcpp2工具编译 SOAP/XML Web Service 9.9 ANSI C编译Web服务和客户端 9.10 GSOAP的限制 9.11 类库构建标志 9.12 运行时(Run Time) 标示 9.13 内存管理 9.13.1 内存分配和管理策略 9.13.2 内部类(Intra-Class)内存管理 9.14 调试 9.15 生成服务器和客户端自动测试 9.16 所需的类库 10 GSOAP服务操作规范格式 10.1 参数传递服务的操作 10.2 错误码 10.3 C/C++ 标示符 与 XML标签名之间的映射 10.4 命名空间映射表 11 GSOAP序列化和反序列化规则 11.1 SOAP RPC编码对战 Document/Literal和xsi:type 信息 11.2 原始类型编码 11.3 为XSD类型表示原始的C/C++类型 11.3.1 一个单独的XSDl类型如何表示多个 C/C++ 类型 11.3.2 如何使用C++ Wrapper 类来指导多态类型 11.3.3 XSD Schema 编码规则 11.3.4 Multi-Reference Strings 11.3.5 "Smart String" 混合内容解码 11.3.6 C++ Strings 11.3.7 更改float和double类型的编码精度 11.3.8 float 和 double 类型的值INF, -INF和NaN 11.4 枚举的序列化 11.4.1 枚举常量的序列化 11.4.2 枚举常量的编码 11.4.3 初始化枚举常量 11.4.4 重利用枚举常量 11.4.5 C枚举内bool类型的序列化 11.4.6 Bitmask 枚举序列化 11.5 结构类型序列化 11.6 类的实例序列化 11.6.1 例子 11.6.2 初始化 静态常量(static const) 字段 11.6.3 初始化类的方法 11.6.4 Getter 和 Setter 方法 11.6.5 Streaming XML with Getter and Setter Methods 11.6.6 Polymorphism, Derived Classes, and Dynamic Binding 11.6.7 XML Attributes 11.6.8 QName Attributes and Elements 11.7 Union Serialization 11.8 Serializing Pointer Types 11.8.1 Multi-Referenced Data 11.8.2 NULL Pointers and Nil Elements 11.9 Void Pointers 11.10 Fixed-Size Arrays 11.11 Dynamic Arrays 11.11.1 SOAP Array Bounds Limits 11.11.2 One-Dimensional Dynamic SOAP Arrays 11.11.3 Example 11.11.4 One-Dimensional Dynamic SOAP Arrays With Non-Zero Offset 11.11.5 Nested One-Dimensional Dynamic SOAP Arrays 11.11.6 Multi-Dimensional Dynamic SOAP Arrays 11.11.7 Encoding XML Generics Containing Dynamic Arrays 11.11.8 STL Containers 11.11.9 Polymorphic Dynamic Arrays and Lists 11.11.10 How to Change the Tag Names of the Elements of a SOAP Array or List 11.12 Base64Binary XML Schema Type Encoding 11.13 hexBinary XML Schema Type Encoding 11.14 Literal XML Encoding Style 11.14.1 Serializing and Deserializing Mixed Content XML With Strings 12 SOAP Fault Processing 13 SOAP Header Processing 14 MIME Attachments 14.1 Sending a Collection of MIME Attachments (SwA) 14.2 Retrieving a Collection of MIME Attachments (SwA) 15 DIME Attachments 15.1 Sending a Collection of DIME Attachments 15.2 Retrieving a Collection of DIME Attachments 15.3 Serializing Binary Data in DIME 15.4 Streaming DIME 15.5 Streaming Chunked DIME 15.6 WSDL Bindings for DIME Attachments 16 MTOM Attachments 16.1 Generating MultipartRelated MIME Attachment Bindings in WSDL 16.2 Sending and Receiving MTOM Attachments 16.3 Streaming MTOM/MIME 16.4 Redirecting Inbound MTOM/MIME Streams Based on SOAP Body Content 16.5 Streaming Chunked MTOM/MIME 17 XML Validation 17.1 Occurrence Constraints 17.1.1 Default Values 17.1.2 Elements with minOccurs and maxOccurs Restrictions 17.1.3 Required and Prohibited Attributes 17.2 Value Constraints 17.2.1 Data Length Restrictions 17.2.2 Value Range Restrictions 17.2.3 Pattern Restrictions 17.3 Element and Attribute Qualified/Unqualified Forms 18 SOAP/XML Over UDP 18.1 Using WS-Addressing with SOAP-over-UDP 18.2 Client-side One-way Unicast 18.3 Client-side One-way Multicast 18.4 Client-side Request-Response Unicast 18.5 Client-side Request-Response Multicast 18.6 SOAP-over-UDP Server 18.7 SOAP-over-UDP Multicast Receiving Server 19 Advanced Features 19.1 Internationalization 19.2 Customizing the WSDL and Namespace Mapping Table File Contents With gSOAP Directives 19.2.1 Example 19.3 Transient Data Types 19.4 Serialization "as is" with Volatile Data Types 19.5 How to Declare User-Defined Serializers and Deserializers 19.6 How to Serialize Data Without Generating XSD Type Attributes 19.7 Function Callbacks for Customized I/O and HTTP Handling 19.8 HTTP 1.0 and 1.1 19.9 HTTP 307 Temporary Redirect Support 19.10 HTTP GET Support 19.11 TCP and HTTP Keep-Alive 19.12 HTTP Chunked Transfer Encoding 19.13 HTTP Buffered Sends 19.14 HTTP Authentication 19.15 HTTP NTLM Authentication 19.16 HTTP Proxy NTLM Authentication 19.17 HTTP Proxy Basic Authentication 19.18 Speed Improvement Tips 19.19 Timeout Management for Non-Blocking Operations 19.20 Socket Options and Flags 19.21 Secure SOAP Web Services with HTTPS/SSL 19.22 Secure SOAP Clients with HTTPS/SSL 19.23 SSL Authentication Callback 19.24 SSL Certificates and Key Files 19.25 SSL Hardware Acceleration 19.26 SSL on Windows 19.27 Zlib Compression 19.28 Client-Side Cookie Support 19.29 Server-Side Cookie Support 19.30 Connecting Clients Through Proxy Servers 19.31 FastCGI Support 19.32 How to Create gSOAP Applications With a Small Memory Footprint 19.33 How to Eliminate BSD Socket Library Linkage 19.34 How to Combine Multiple Client and Server Implementations into one Executable 19.35 How to Build a Client or Server in a C++ Code Namespace 19.36 How to Create Client/Server Libraries 19.36.1 C++ Clients Example 19.36.2 C Clients Example 19.36.3 C Services Chaining Example 19.37 How to Create DLLs 19.37.1 Create the Base stdsoap2.dll 19.37.2 Creating Client and Server DLLs 19.38 gSOAP Plug-ins 19.38.1 The Message Logging and Statistics Plug-in 19.38.2 RESTful Interface: The HTTP GET Plug-in 19.38.3 RESTful Interface: The HTTP POST Plug-in 19.38.4 The HTTP MD5 Checksum Plug-in 19.38.5 The HTTP Digest Authentication Plug-in 19.38.6 The WS-Addressing Plug-in 19.38.7 The WS-ReliableMessaging Plug-in 19.38.8 The WS-Security Plug-in 19.38.9 WS-Discovery |
Copyright (C) 2000-2012 Robert A. van Engelen, GENIVIA INC, All Rights Reserved.