soappasinv2.pas

来自「C/S方式下的HTTPS安全数据传输控件.控件在INDY9 和delphi7下编」· PAS 代码 · 共 57 行

PAS
57
字号
unit SOAPPasInv2;

interface

uses
  Classes, InvokeRegistry, SOAPPasInv;

type
  TSoapPascalInvokerProvidingInvoker = class(TSoapPascalInvoker)
  public
    class procedure AdjustSOAPHeaders(aSelf: TSoapPascalInvoker);
    class function GetInvoker(aClass: TInvokableClass): TSoapPascalInvoker;
  end;

  THeaderListWithInvoker = class(THeaderList)
  protected
    fInvoker: TSoapPascalInvoker;
  end;

implementation

type
  TInvokableClassCrack = class(TInvokableClass)
  end;

  TSOAPHeadersBaseCrack = class(TSOAPHeadersBase)
  end;

{ TSoapPascalInvokerProvidingInvoker }
class function TSoapPascalInvokerProvidingInvoker.GetInvoker(
  aClass: TInvokableClass): TSoapPascalInvoker;
begin
  with TInvokableClassCrack(aClass), TSOAPHeadersBaseCrack(fSOAPHeaders) do
    if FHeadersInbound is THeaderListWithInvoker then
      Result:= THeaderListWithInvoker(FHeadersInbound).fInvoker
  else
    Result:= nil;
end;

class procedure TSoapPascalInvokerProvidingInvoker.AdjustSOAPHeaders(
  aSelf: TSoapPascalInvoker);
begin
  if not (TSoapPascalInvokerProvidingInvoker(aSelf).fHeadersIn is
  THeaderListWithInvoker) then
  begin
    TSoapPascalInvokerProvidingInvoker(aSelf).FHeadersIn.Free;
    TSoapPascalInvokerProvidingInvoker(aSelf).FHeadersIn:=
    THeaderListWithInvoker.Create;
    THeaderListWithInvoker(TSoapPascalInvokerProvidingInvoker(aSelf).FHeadersIn).fInvoker
      := aSelf;
    TSoapPascalInvokerProvidingInvoker(aSelf).FHeadersIn.OwnsObjects := False;
  end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?