WebService开发(一) 如何使用Soap头 http://www.cnblogs.com/wayne-ivan/archive/2007/06/19/788539.html

转载 2007年09月18日 15:26:00
平时写Web Service时经常会对Service的访问进行安全控制,方法很多,这里介绍一下如何用Soap头来进行控制的一例。
      第一步,引用需要用到的名称空间
using System;
using System.Xml;
using System.Xml.Serialization;
using System.Web.Services;
using System.Web.Services.Protocols;
      
      第二步,建立自定义的SoapHeader类MySoapHeader
public class MySoapHeader : SoapHeader
{
    
string _name;
    
string _passWord;

    
public string Name
    
{
        
get return _name; }
        
set { _name = value; }
    }

    
public string PassWord
    
{
        
get return _passWord; }
        
set { _passWord = value; }
    }

}

      第三步,建立WebSerivce,MyService类有一个MySoapHeader类型的字段公共header,在客户调用CheckHeader之前需要给header付一个新实例,服务器端检验这个实例的成员信息。失败我们抛出一个SoapHeaderException,这个异常的新实例,这里调用两个参数的构造函数。第一个参数是自定义的异常原因,第二个参数我们用SoapException.ClientFaultCode表示客户的调用格式不正确或缺少必要的信息。
[WebService(Namespace = "http://DavidFan.cnblogs.com")]
public class MyService : System.Web.Services.WebService
{
    
public MySoapHeader header;
    [SoapHeader(
"header", Direction = SoapHeaderDirection.In)]
    
public string CheckHeader()
    
{
        
if (header == null)
        
{
            
throw new SoapHeaderException("认证失败", SoapException.ClientFaultCode);
        }

        
else
        
{
            
if (header.Name != "admin" || header.PassWord != "admin")
            
{
                
throw new SoapHeaderException("认证失败", SoapException.ClientFaultCode);
            }

        }

        
//业务逻辑.
        return "Something done";
    }

}

      第四步,客户端进行调用,这里的MySoapHeader,和MyService类即为WSDL工具生成代理类,对应服务端的上两个类。我们首先new 一个MySoapHeader的新实例,然后付个Myservice的新实例的header字段,最后调用CheckHeader这个服务器的方法,CheckHeader方法的header!=null,接着进行Name和PassWord的验证。
客户端try-catch块内首先捕获SoapHeaderException(如果有的话)。然后捕获Exception。好了整个过程只需这几步。
public class ServiceClient
{
    
protected void ClientMethod(string name, string passWord)
    
{
        MySoapHeader h 
= new MySoapHeader();
        h.Name 
= name;
        h.PassWord 
= passWord;
        MyService service 
= new MyService();
        service.header 
= h;
        
try
        
{
            
string retval = service.CheckHeader();
            Console.WriteLine(
"Return:" + retval);
        }

        
catch (SoapHeaderException soapEx)
        
{
            Console.WriteLine(
"Soap Header Exception:" + soapEx.Message);
        }

        
catch (Exception ex)
        
{
            Console.WriteLine(
"Exception:" + ex.Message);
        }

    }

}

      到些为止,利用Soap头的一例简单的介绍完了,扩展应用,就由大家来发挥吧! 

[Python]webservice学习(2) --自己写soap消息请求服务

上文中webservice学习(1) ,使用soaplib建立了一个超简单的webservice服务,也是用suds调用成功了,那如果想使用http包自己组成一个soap消息来调用接口怎么办呢? 这...
  • lzz957748332
  • lzz957748332
  • 2014年05月17日 16:02
  • 4451

使用CXF 开发SOAP webservice 服务端实例

目前
  • Leonardo9029
  • Leonardo9029
  • 2014年11月10日 19:24
  • 1483

在eclipse中,如何查看webservice请求头

本篇文章还以HelloService为例。 完整的HelloService.java文件如下 package cn.itcast.ws; import javax.jws.WebServic...
  • jxz_st_love123
  • jxz_st_love123
  • 2015年04月18日 20:51
  • 2185

一个简单的性能计数器:CodeTimer

转载自老赵的博客:http://blog.zhaojie.me 原文链接:http://blog.zhaojie.me/2009/03/codetimer.html 有数据,有真相,相...
  • awp0011
  • awp0011
  • 2015年10月17日 08:43
  • 466

网络攻击技术(三)——Denial Of Service

DOS攻击。。貌似很厉害。虽然不是很懂,但是要记录下来。不忘研究
  • qq_19674905
  • qq_19674905
  • 2016年12月08日 22:42
  • 128

web服务中三种发送接受协议SOAP/HTTP

原文地址:【WebService】web服务中三种发送接受协议SOAP/HTTP作者:橘子ivy的世界 一、web服务中三种发送接受协议SOAP/HTTP GET/HTTP PO...
  • Cindy_C
  • Cindy_C
  • 2016年12月18日 10:07
  • 1607

java使用soap方式简单实现webservice

java类: import java.net.URL; import javax.xml.namespace.QName; import javax.xml.soap.MessageFactor...
  • nohero1
  • nohero1
  • 2014年02月28日 14:56
  • 55403

java使用soap方式简单实现webservice (二)

上一篇从 xml 中找对应的参数比较麻烦,这里介绍用 SOAPUI 的方式填写参数 这里为实际调用 .net的 短信发送服务测试import java.net.URL; import javax...
  • nohero1
  • nohero1
  • 2015年10月13日 10:53
  • 10973

java 调用.net webservice 带soap验证头消息方式

java调用.net webservice soap验证信息
  • baidu_16217779
  • baidu_16217779
  • 2015年09月07日 11:27
  • 793

java日志文件log4j.properties配置详解

log4j.properties配置
  • u012485012
  • u012485012
  • 2017年03月17日 01:27
  • 201
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebService开发(一) 如何使用Soap头 http://www.cnblogs.com/wayne-ivan/archive/2007/06/19/788539.html
举报原因:
原因补充:

(最多只允许输入30个字)