加载中…
个人资料
小胖和猪猪
小胖和猪猪
  • 博客等级:
  • 博客积分:0
  • 博客访问:839,436
  • 关注人气:111
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Delphi实现WebService带身份认证的数据传输

(2010-04-26 11:03:34)
标签:

delphi

windows编程

it

分类: 计算机

    在WebService中,用户身份认证信息可以在客户端通过soap头(soap header)进行传送。在WebService服务端的编写中,需要对soap头进行处理,这个处理过程就是提取Soap Header中的用户认证信息进行验证。下面就来看看在Delphi中这个身份认证是如何实现的:

   通过WSDL import引入WEBSERVICE,DELPHI会自动产生自定义的Header类,这个类继承于TSoapHeader。

ShuSoapHeader = class(TSOAPHeader)
  private
    FNMsg: WideString;
    FUserID: WideString;
    FPassWord: WideString;
  published
    property NMsg: WideString read FNMsg write FNMsg;
    property UserID: WideString read FUserID write FUserID;
    property PassWord: WideString read FPassWord write FPassWord;
  end;

同时自动产生引用接口:

  InvRegistry.RegisterInterface(TypeInfo(SLoginServicesSoap), 'http://passport.shu.edu.cn/', 'utf-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(SLoginServicesSoap), 'http://passport.shu.edu.cn/%operationName%');
  InvRegistry.RegisterHeaderClass(TypeInfo(SLoginServicesSoap), ShuSoapHeader, 'ShuSoapHeader', '');
  RemClassRegistry.RegisterXSClass(ShuSoapHeader, 'http://passport.shu.edu.cn/', 'ShuSoapHeader');
  RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfString), 'http://passport.shu.edu.cn/', 'ArrayOfString');

客户端使用:

var
  i:integer;
  aIntf: SLoginServicesSoap;
  soaphead : ShuSoapHeader;
  Headers: ISOAPHeaders;
begin
    aIntf := sLogin as SLoginServicesSoap;//THTTPRIO控件
    soaphead:=  ShuSoapHeader.Create;
    soaphead.UserID :='';
    soaphead.PassWord := '';
    try
      Headers := (aIntf  as  ISOAPHeaders);
      Headers.Send(soaphead);  //发送Soap Header
      i:= aIntf.ValidByEd(Trim(Edit_name.Text),Trim(Edit_pass.Text));
    finally
      aIntf := nil;
      soaphead.Free;
    end;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有