访问Delphi SOAP服务器中的原始TWebRequest对象

时间:2012-05-01 22:22:48

标签: web-services delphi soap httpwebrequest

总结:如何访问Delphi Soap Server应用程序中的原始TWebRequest对象?

我的网络服务使用方法ITest发布服务CallMe

ITest = interface(IInvokable)
['{AA226176-FFAD-488F-8768-99E706450F31}']
  function CallMe: string; stdcall;
end;
...
initialization
InvRegistry.RegisterInterface(TypeInfo(ITest));

此接口在类中实现:

TTest = class(TInvokableClass, ITest)
public
  function CallMe: string; stdcall;
end;
...
initialization
InvRegistry.RegisterInvokableClass(TTest, TestFactory);

如何访问此方法实现中的原始TWebRequest对象?例如。如果我想检查设置了哪些cookie,或者在请求中阅读其他属性:

function TTest.CallMe: string;
begin
  // how to access TWebRequest object
  ...
end;

1 个答案:

答案 0 :(得分:4)

uses
  System.SysUtils,
  Web.HTTPApp,
  Soap.WebBrokerSOAP;

function TTest.CallMe: string;
var
  WebDispatcher: IWebDispatcherAccess;
begin
  Result := '';
  if Supports(GetSOAPWebModule, IWebDispatcherAccess, WebDispatcher) then
    Result := Format('You are calling me from: %s', [WebDispatcher.Request.RemoteIP]);
end;