您的位置:首页 > 编程语言 > Delphi

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

2011-08-19 10:18 393 查看
在WebService中,用户身份认证信息可以在客户端通过soap头(soapheader)进行传送。在WebService服务端的编写中,需要对soap头进行处理,这个处理过程就是提取SoapHeader中的用户认证信息进行验证。下面就来看看在Delphi中这个身份认证是如何实现的:
通过WSDLimport引入WEBSERVICE,DELPHI会自动产生自定义的Header类,这个类继承于TSoapHeader。

ShuSoapHeader = class(TSOAPHeader)

private

FNMsg:WideString;

FUserID:WideString;

FPassWord:WideString;

published

propertyNMsg: WideString read FNMsg write FNMsg;

propertyUserID: WideString read FUserID write FUserID;

propertyPassWord: 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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: