本文转自: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 标头的类

  1. 创建一个从 SoapHeader 类派生的类,其名称与 SOAP 标头的根元素匹配。

    C#
    复制
    public class MyHeader : SoapHeader

    VB
    复制
    Public Class MyHeader : Inherits SoapHeader
    

  2. 添加公共字段或属性,使其名称和每个元素的各个数据类型与 SOAP 标头中的对应项匹配。

    例如,给定以下 SOAP 标头,后面的类定义一个表示该 SOAP 标头的类。

    C#
    复制
    <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;
    }

    VB
    复制
    Public Class MyHeader : Inherits SoapHeader Public Created As DateTimePublic Expires As Long
    End Class
    

处理 Web 服务内的 SOAP 标头

  1. 向实现表示 SOAP 标头的类型的 Web 服务的类中添加一个公共成员。

    C#
    复制
    [WebService(Namespace="http://www.contoso.com")]
    public class MyWebService
    {// Add a member variable of the type deriving from SoapHeader.public MyHeader timeStamp;
    

    VB
    复制
    <WebService(Namespace:="http://www.contoso.com")> _
    Public Class MyWebService' Add a member variable of the type deriving from SoapHeader.Public TimeStamp As MyHeader
    

  2. 向旨在处理 SOAP 标头的每个 Web 服务方法应用一个 SoapHeader 特性。将 SoapHeader 特性的 MemberName 属性设置为在第一步中创建的成员变量的名称。

    C#
    复制
        [WebMethod][SoapHeader("timeStamp")]public void MyWebMethod()

    VB
    复制
        <WebMethod, SoapHeader("TimeStamp")> _ Public Sub MyWebMethod()
    

  3. 在应用了 SoapHeader 特性的每个 Web 服务方法内,访问在第一步中创建的成员变量,以处理在 SOAP 标头中发送的数据。

    C#
    复制
        [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!");}

    VB
    复制
        <WebMethod,SoapHeader("TimeStamp", _Direction:=SoapHeaderDirection.InOut)> _ Public Function MyWebMethod() As String' Process the SoapHeader.If (TimeStamp Is Nothing) ThenTimeStamp = New MyHeaderEnd IfTimeStamp.Expires = 60000TimeStamp.Created = DateTime.UtcNowReturn "Hello World!"End Function

示例

下面的代码示例演示如何在使用 ASP.NET 创建的 Web 服务中定义和处理 SOAP 标头。MyWebService Web 服务有一个名为 myHeaderMemberVariable 的成员变量,该变量属于从 SoapHeader (MyHeader) 派生的类型并设置为 SoapHeader 特性的 MemberName 属性。此外,还对指定 myHeaderMemberVariableMyWebMethod Web 服务方法应用了 SoapHeader 特性。在 MyWebMethod Web 服务方法内,访问 myHeaderMemberVariable 可获得 SOAP 标头的 Username XML 元素的值。

C#
VB

复制
<%@ 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>

另请参见

参考

SoapHeader SoapHeaderAttribute SoapUnknownHeader SoapHeaderException

概念

生成 XML Web services 客户端

其他资源

使用 SOAP 标头 使用 ASP.NET 的 XML Web services

[转]如何:定义和处理 SOAP 标头相关推荐

  1. java soap 头_如何在Java中添加Soap标头

    我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头.如何在Java中添加soap标头? Authenticator.setDefault(new ProxyAuthen ...

  2. SOAP 1.1 - 学习

    SOAP 1.1 --- 每天发送SOAP request,不搞明白啥叫SOAP,惭愧 SOAP 1.1 XML 架构定义 <xs:schema xmlns:xs="http://ww ...

  3. SOAP:简单对象访问协议

    见:https://baike.baidu.com/item/%E7%AE%80%E5%8D%95%E5%AF%B9%E8%B1%A1%E8%AE%BF%E9%97%AE%E5%8D%8F%E8%AE ...

  4. restful soap_Web服务面试问题– SOAP,RESTful

    restful soap Welcome to the Web Services Interview Questions with detailed answers. Recently I have ...

  5. 对于SOAP协议的全面介绍

    学习了一段时间的网络协议 , 相信大家已经对一些常规的网络协议有所了解了.那么这里我们主要介绍一下SOAP协议的内容.SOAP协议:简单对象访问协议(SOAP:Simple Object Access ...

  6. SOAP(简单对象访问协议) 1.1规范简介

    SOAP(简单对象访问协议) 1.1规范简介 SOAP(Simple Object Access Protocal ,简单对象访问协议 ) 技术有助于实现大量异构程序和平台之间的互操作性,从而使存在的 ...

  7. SOAP Web服务

    根据W3C定义,SOAP是什么 " SOAP是一种轻量级协议,旨在在分散的分布式环境中交换结构化信息. 它使用XML技术来定义和扩展消息传递框架,从而提供可以在各种基础协议之间交换的消息构造 ...

  8. soap开票服务器系统,使用 SOAP 服务

    使用 SOAP 服务 为阐明 Web 服务的众多特性,先以一个简单的华氏温度到摄氏温度转换器作为示例服务开始介绍. ♦  设置简单的 Web 服务服务器 创建数据库. dbinit ftc 使用此数据 ...

  9. 用WSDL定义Web服务

      在Web服务的世界里,应用程序基本上由远程的.XML驱动的组件构成,这些组件采用不同的语言编写,再采用标准的远程激活协议通过Web连接.服务提供者定义所提供服务需要用到的数据格式.同样的,当你在以 ...

  10. 在 ASP.NET Core 中使用 HTTP 标头传播

    前言 我们常用 JWT 令牌用于身份验证,前端一般是在请求中包含 HTTP 标头 Authorization 实现. 但是,当服务间需要互相调用时,也需要"按原样"将标头传播到目标 ...

最新文章

  1. 剑指offer:面试题15. 二进制中1的个数
  2. java开发面试复试_面试java开发,面试官会问哪些问题?
  3. 刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...
  4. Python学习笔记(列表和元组的简单实用)
  5. 诗与远方:无题(二十一)
  6. python自动化办公要学多久-基于python实现自动化办公学习笔记
  7. 国际图形学大会(SIGGRAPH)2017届主席竞选答辩是如此场景
  8. css修改单选按钮样式
  9. 如何将PDF分成每页单独的PDF?3种PDF拆分的方法
  10. 获取本机内网、外网ip
  11. S3C2440C语言点灯
  12. 这程序还厉害的。。。
  13. Android 9 Audio系统笔记:AudioFlinger音频流处理流程
  14. 如何应对团队协作的五大障碍
  15. TCP/IP网络通信协议
  16. Android初级,Toast的带图片显示
  17. 802.11--802.11ac协议
  18. hbuilder 断点_Hbuilder配置php断点调试
  19. 慧荣SM2269XT量产开卡成功,附SM2269XT量产工具、开卡软件
  20. antd 表格分页功能

热门文章

  1. Java读取文本文件中文乱码问题
  2. mysql 改变 执行计划_诡异的MySql执行计划的更改
  3. mycat是什么_MyCat
  4. python虚拟环境搭建learning_log_vscode Python 虚拟环境搭建
  5. css中如何实现导航栏横向,css横向导航栏
  6. Futter基础第5篇: 实现列表、动态列表【ListView、ListView.builder】
  7. Android-【报错】java.lang.ClassCastException: .MainActivity cannot be cast to java.lang.Runnable
  8. rk3399_android7.1 USB Type-A的配置
  9. 第一讲:使用html5——canvas绘制奥运五环
  10. MVC 添加Area