delphi webserver soap头(soap header)信息传送

在做一个webserver 接口的时候,需要在soap header传送登录后的SessionId,通常delphi生成接口后传送的XML里是不会有包括header数据信息的,这就只能是写代码增加上去。
那么,首先我们需要先自行定义一个类:

const
  IS_TEXT = $0020;     {一个常量,也很重要}

  //这个定义了 Header信息基础类
  TSessionIdHeader = class(TSOAPHeader)
  private
    FValue: string;
  published
    property Value: string Index (IS_TEXT) read FValue write FValue;
  end;

  SessionId = class(TSessionIdHeader);  {使用SessionId为Header的数据类}

这里的IS_TEXT 是很重要的内容,有他后,在生成的XML数据里不会生成Value。
需要引用:Soap.SOAPHTTPClient

类生成后,需要在initialization中增加一个注册:

initialization
  //下面这条很重要
  InvRegistry.RegisterHeaderClass(TypeInfo(WS), SessionId, '', '');

调用时需要增加的内容:

var
  vSessionIdHeader:SessionId;
begin
  vSessionIdHeader:=SessionId.Create;//创建这个类
  vSessionIdHeader.Value:='SessionId';//给SessionId赋值

  vGLWS := GetWS;
  (vGLWS as ISOAPHeaders).Send(vSessionIdHeader);//这行代码将会让XML里增加上header数据内容

你可能感兴趣的:(webserver,soap,header,soap头信息传送,header传送,XE,webserver)