生成的XML文本格式如下:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
- <soapenv:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema
" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance
" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/
" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
">
-
<soapenv:Header>
<ns1:username xmlns:ns1="Authorization">sysadmin</ns1:username>
<ns2:password xmlns:ns2="Authorization">Amdocsls08</ns2:password>
</soapenv:Header>
- <soapenv:Body>
- <ns1:invoke xmlns:ns1="http://server.webservice.core.epm
" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/
">
<path>epm/cc/assistant/ctiactioninfo/service/CtiActionInfoService</path>
<methodName>saveBatchCtiActionInfo</methodName>
<dataXmlStr><?xml version='1.0'
encoding='UTF-8'?><DBSET><R><C
N="calledWorkNo">agent1</C><C
N="calloutNo">agent1</C><C N="itemSrc">1</C><C
N="itemId">1</C><C N="callId">01</C><C
N="calledExetensionNo">01</C><C
N="aniNo">agent1</C><C N="dnisNo">01</C><C
N="recordId">01</C><C N="orgNo">3401</C><C
N="queueNo">6601</C><C N="flowNo"></C><C
N="workNo">agent</C><C
N="exetensionNo">3001</C></R></DBSET></dataXmlStr>
</ns1:invoke>
</soapenv:Body>
</soapenv:Envelope>
需额外生成的文本为红色标记部位...下面说下如何实现这个Soap Header的添加
在用gsoap工具编译生成的xxx.nsmp文件中加入红色标注代码
一 xxxxxxSoapBinding.nsmap
#include "soapH.h"
SOAP_NMAC struct Namespace namespaces[] =
{
{"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL},
{"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL},
{"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL},
{"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL},
{"ns1", "Authorization", NULL, NULL},
{"ns2", "Authorization", NULL, NULL},
{NULL, NULL, NULL, NULL}
};
二
在 soapC.c中对soap_out_SOAP_ENV_Header()原型进行更改,添加红色标注部分代码.
SOAP_FMAC3
int
SOAP_FMAC4 soap_out_SOAP_ENV__Header(
struct
soap *soap,
const
char
*tag,
int
id,
const
struct
SOAP_ENV__Header *a,
const
char
*type)
{
soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Header), type);
/* transient dummy skipped */
soap_out_string(soap, "ns1:username", 1, &(a->username), "");
soap_out_string(soap, "ns2:password", 2, &(a->password), "");
soap_element_end_out(soap, tag);
return
SOAP_OK;
}
三
在 soapStub.h中对结构体SOAP_ENV_Header添加2个成员.分别为char *username, char *password.
#ifndef
SOAP_TYPE_SOAP_ENV__Header
#define
SOAP_TYPE_SOAP_ENV__Header (18)
/* SOAP Header: */
struct
SOAP_ENV__Header
{
void
*dummy;
/* transient */
char *username;
char *password;
};
#endif
相关推荐
当涉及到Web Service客户端与服务器之间的交互时,有时需要在SOAP消息中添加额外的信息,例如身份验证或安全凭证,这就是SOAP Header的作用。SOAP Header是SOAP Envelope的一部分,它允许扩展和自定义消息处理。 在...
标题:Delphi的SOAP Header问题 描述:解决Delphi的SOAP Header问题 知识点: ### Delphi与SOAP协议 SOAP(Simple Object Access Protocol)是一种轻量级的协议,用于在Web服务中交换信息,通常基于XML格式。...
根据提供的标题、描述、标签及部分内容,我们可以详细探讨CXF框架中SOAP Header的使用方法。 ### CXF SOAP Header 使用详解 #### 一、引言 Apache CXF 是一个开源项目,提供了一套全面的框架来构建和服务 SOA 架构...
在"Web Services SOAP Header 验证的例子"中,我们将探讨如何利用SOAP Header来验证客户端的身份,确保只有授权的用户或应用程序可以访问Web服务。 在SOAP消息中,Header和Body两部分是分开的。Body部分包含实际的...
SOAP Header和SOAP Extensions是SOAP消息中的两个关键组成部分,它们为Web服务提供了额外的功能和扩展性。 SOAP Header不是消息的主要部分,即SOAP Body,但它允许添加额外的信息,如安全认证、交易信息或路由指令...
在本文中,我们将深入探讨SOAP Header的创建与解析,特别是在Java环境下如何实现。SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中传递消息。SOAP Header是SOAP消息的一部分,它允许...
SOAP消息通常包含一个Header和一个Body,Header部分可以用来传递额外的信息,如认证、会话管理等。在这个例子中,我们探讨的是如何利用自定义SOAP Header在.NET Web Service中实现权限控制。 自定义SOAP Header是一...
本案例中,我们将探讨如何使用C#在VS2013环境下调用一个Java编写的带有SOAP Header的Web服务。这个过程涉及到.NET Framework的Web服务客户端代理生成、SOAP消息的处理以及与Java Web服务的交互。 首先,我们需要...
标题中的“JAX-WS SOAP header设值”指的是在Java应用程序中使用JAX-WS(Java API for XML Web Services)框架来设置SOAP消息头的过程。SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中...
Axis2 通过soap header进行授权服务 客户端根据是否生产stub客户端代码采用两种形式实现。
在开发基于SOAP协议的服务时,有时我们需要在请求中添加特定的Header信息,这在CXF框架下可以通过编程方式实现。Apache CXF是一个流行的开源服务框架,支持SOAP和RESTful服务的开发、部署和消费。本示例将详细介绍...
JAVA 解析 SOAP Header 在 Java 中,SOAP Header 是一种重要的数据结构,它是 Web 服务编程中用于传输数据的标准协议。SOAP Header 中包含了许多重要的信息,如认证信息、交易信息等。下面将详细介绍如何在 Java 中...
5. **基于SOAP Header的安全机制**:实现一个简单的安全认证机制,使用SOAP Header中的信息来进行认证。 #### 三、实验步骤详解 1. **导出WSDL文件**:假设上节课已经完成了一个用户验证服务,现在需要导出它的...
描述中提到的博客链接可能提供了一个详细的实践案例,展示了如何在CXF中配置和处理带有自定义header的SOAP请求。通常,这涉及到以下步骤: 1. **创建服务接口**:首先,你需要定义一个SOAP服务接口,这个接口将暴露...
它由`<soap:Header>`和`</soap:Header>`包围。 3. **SOAP Body**:消息的主要内容,包含了实际的服务调用和响应。Body中的元素通常是一个单一的XML结构,代表了Web服务的方法调用或响应。它由`<soap:Body>`和`</...
SOAP消息具有清晰的结构,由SOAP Envelope(信封)、SOAP Header(头部)和SOAP Body(主体)组成。 SOAP Envelope是SOAP消息的顶层XML元素,它是每个SOAP消息的基础。它的命名空间标识为...
在SOAP中,通过设置SOAP Header,服务器可以要求客户端提供有效的Windows凭证来访问服务。`Demo XML Web Service for Windows Authentication`这个项目展示了如何配置和使用SOAP Header进行Windows身份验证。这涉及...
1. **SOAP消息结构**:SOAP消息以XML文档的形式表示,包含三个主要部分:Header、Body和Envelope。Header用于传递与消息处理相关的元数据,Body则包含实际的服务调用信息,Envelope是整个消息的容器。 2. **SOAP...
2. **SOAP Header**:可选部分,用于包含消息头信息,如认证、路由等。如果存在,它会被放置在`<soap:Header>`元素内。 3. **SOAP Body**:这里是请求的主要内容,包含了调用Web服务的实际方法和参数。通常,这个...
SOAP消息是一个XML文档,由三部分组成:Envelope、Header和Body。Envelope定义了消息的边界,Header包含可选的处理信息,Body则包含了实际的应用数据。 2. **SOAP Envelope**: SOAP Envelope元素是SOAP消息的根...