[转]如何:定义和处理 SOAP 标头
本文转自:http://msdn.microsoft.com/zh-cn/library/vstudio/8728chd5(v=vs.100).aspx
本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.
使用 ASP.NET 创建的 Web 服务可以定义和操作 SOAP 标头。通过在特定 SOAP 标头中定义表示数据的类并从 SoapHeader 类派生它,便可完成 SOAP 标头的定义。
定义表示 SOAP 标头的类
创建一个从 SoapHeader 类派生的类,其名称与 SOAP 标头的根元素匹配。
添加公共字段或属性,使其名称和每个元素的各个数据类型与 SOAP 标头中的对应项匹配。
例如,给定以下 SOAP 标头,后面的类定义一个表示该 SOAP 标头的类。
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<MyHeader xmlns="http://www.contoso.com">
<Created>dateTime</Expires>
<Expires>long</Expires>
</MyHeader>
</soap:Header> public class MyHeader : SoapHeader
{
public DateTime Created;
public long Expires;
}
处理 Web 服务内的 SOAP 标头
向实现表示 SOAP 标头的类型的 Web 服务的类中添加一个公共成员。
[WebService(Namespace="http://www.contoso.com")]
public class MyWebService
{
// Add a member variable of the type deriving from SoapHeader.
public MyHeader timeStamp;向旨在处理 SOAP 标头的每个 Web 服务方法应用一个 SoapHeader 特性。将 SoapHeader 特性的 MemberName 属性设置为在第一步中创建的成员变量的名称。
在应用了 SoapHeader 特性的每个 Web 服务方法内,访问在第一步中创建的成员变量,以处理在 SOAP 标头中发送的数据。
[WebMethod]
[SoapHeader("myHeaderMemberVariable")]
public string MyWebMethod()
{
// Verify that the client sent the SOAP Header.
if (timeStamp == null) timeStamp = new MyHeader();
// Set the value of the SoapHeader returned to the client.
timeStamp.Expires = 60000;
timeStamp.Created = DateTime.UtcNow; return("Hello World!");
}<WebMethod,SoapHeader("TimeStamp", _
Direction:=SoapHeaderDirection.InOut)> _
Public Function MyWebMethod() As String
' Process the SoapHeader.
If (TimeStamp Is Nothing) Then
TimeStamp = New MyHeader
End If
TimeStamp.Expires = 60000
TimeStamp.Created = DateTime.UtcNow Return "Hello World!"
End Function
示例
下面的代码示例演示如何在使用 ASP.NET 创建的 Web 服务中定义和处理 SOAP 标头。MyWebService Web 服务有一个名为 myHeaderMemberVariable 的成员变量,该变量属于从 SoapHeader (MyHeader) 派生的类型并设置为 SoapHeader 特性的 MemberName 属性。此外,还对指定 myHeaderMemberVariable 的 MyWebMethod Web 服务方法应用了 SoapHeader 特性。在 MyWebMethod Web 服务方法内,访问 myHeaderMemberVariable 可获得 SOAP 标头的 Username XML 元素的值。
<%@ WebService Language="C#" Class="MyWebService" %>
using System.Web.Services;
using System.Web.Services.Protocols; // Define a SOAP header by deriving from the SoapHeader class.
public class MyHeader : SoapHeader
{
public DateTime Created;
public long Expires;
} [WebService(Namespace="http://www.contoso.com")]
public class MyWebService
{
// Add a member variable of the type deriving from SoapHeader.
public MyHeader myHeaderMemberVariable; // Apply a SoapHeader attribute.
[WebMethod]
[SoapHeader("myHeaderMemberVariable")]
public void MyWebMethod()
{
// Process the SoapHeader.
if (myHeaderMemberVariable.Username == "admin")
{
// Do something interesting.
}
}
}
在上一示例中,如果对 MyWebMethod 的 SOAP 请求有一个 MyHeader SOAP 标头,并且有一个 UserName 元素设置为 Admin,则会执行附加代码。也就是说,下面的 SOAP 请求会导致该代码执行。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<MyHeader xmlns="http://www.contoso.com">
<Created>dateTime</Created>
<Expires>long</Expires>
</MyHeader>
</soap:Header>
<soap:Body>
<MyWebMethod xmlns="http://www.contoso.com" />
</soap:Body>
</soap:Envelope>
另请参见
[转]如何:定义和处理 SOAP 标头的更多相关文章
- HTTP 和 SOAP 标头 来传递用户名密码 验证webservice用户认证
支持自定义的 HTTP 和 SOAP 标头 注意:本主题中的内容适用于 Microsoft Office SharePoint Server 2007 SP1. 对于 Web 服务,您可以使用 HTT ...
- SOAP 介绍
简介 SOAP(Simple Object Access Protoco)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于 XML 的协议.此协议规范由 IBM.Microso ...
- SOAP 简单对象访问协议
webService三要素 SOAP.WSDL(WebServicesDescriptionLanguage).UDDI(UniversalDescriptionDiscovery andIntegr ...
- [Postman]发出SOAP请求(18)
使用Postman发出SOAP请求: 将SOAP端点作为URL.如果您使用的是WSDL,那么请将WSDL的路径作为URL. 将请求方法设置为POST. 打开原始编辑器,并将正文类型设置为“text / ...
- soap,socket
Socket 接口是访问 Internet 使用得最广泛的方法. 如果你有一台刚配好TCP/IP协议的主机,其IP地址是202.120.127.201, 此时在另一台主机或同一台主机上执行ftp 20 ...
- SOAP、SOCKET协议
一.SOAP( SOAP:Simple Object Access Protocol) 简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的.简单的.基于 XML 的协议,它被设计成在 WEB ...
- Rest(Restful)风格的Web API跟RPC风格的SOAP WebService--这些名词都啥意思?
经常看到这些词汇,也有baidu或google过,但记忆里总是模糊,不确定,以至于别人问及的时候,总说不清楚.开篇随笔记录下.大家有补充或者意见的尽请留文. 本文顺序: 一.Rest(Restful) ...
- SOAP Web 服务介绍
已经跨入 2015 年,当今最为常见的两种 Web 服务类型分别是: REST 和 SOAP .不过,从趋势来看,越来越多人已经开始使用 REST 风格的 Web 服务.而 SOAP 大多也开始或已经 ...
- WebService之SOAP
SOAP(Simple Object Access Protocol),它是一种标准消息传递协议,通常是Web Service的事实标准.SOAP是以XML为基础,SOAP消息格式是由XML Sche ...
随机推荐
- sqlserver 中的NOLOCK、HOLDLOCK、UPDLOCK、TABLOCK、TABLOCKX
1.NOLOCK(不加锁) 此选项被选中时,SQL Server 在读取或修改数据时不加任何锁. 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Rol ...
- JavaScript关闭窗口的同时打开新页面的方法
做网页的时候需要弹出一个小窗口,然后要实现一个功能就是鼠标点击超链接关闭小窗口并打开一个新页面,就如同下图: 这是一个小窗口,点击超链接这个窗口会关闭并且会正常在浏览器打开新页面,首先写js关闭窗口的 ...
- 一台机器开2个Tomcat修改端口号
修改一个Tomcat端口号步骤:1.找到Tomcat目录下的conf文件夹2.进入conf文件夹里面找到server.xml文件3.打开server.xml文件4.在server.xml文件里面找到下 ...
- JPush Wiki
极光推送包含有通知与自定义消息两种类型的推送.本文描述他们的区别,以及建议的应用场景. 功能角度 通知 或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息. ...
- operator new与new operator的区别
原文地址:http://www.cnblogs.com/jamesmile/archive/2010/04/17/1714311.html,在此感谢 C++中的operator new与new ope ...
- Fresco 源码分析(一) DraweeView-DraweeHierarchy-DraweeController(MVC) DraweeHierachy+DraweeController的分析
4.1.5.2 模型层DraweeHierachy继承体系以及各个类的作用 DraweeHierachy (I) --| SettableDraweeHierarchy (I) ------| Gen ...
- Zabbix报告无交换内存主机 Lack of free swap space on xxxxx
[root@xx ~]# free -m total used free shared buffers cached Mem: 3832 3488 343 0 267 2389 -/+ buffers ...
- ASP.NET之AreaRegistration
ASP.NETMVC的AreaRegistration是用来干什么呢? 它是用来提供一个很好的接口让我们可以将Controller定义在其他的Library项目中,这主要可以用来解决模块化开发:一般情 ...
- MySQL日常应用和操作记录
整理MySQL日常操作. 1.知道一个字段名,怎样查到它在数据库里的哪张表里? USE Information_schema;SELECT TABLE_NAME FROM COLUMNS WHERE ...
- tty相关内容
参考文章: http://blog.csdn.net/goodluckwhh/article/details/13368279