2012-05-01 15 views
7

Resumen: ¿Cómo se accede al objeto original TWebRequest en una aplicación Delphi Soap Server?Acceso al objeto TWebRequest original en un Delphi SOAP Server

Mi servicio web publica un servicio ITest con un método CallMe:

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

Esta interfaz se implementa en una clase:

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

¿Cómo accedo a la TWebRequest objeto original en el interior de la aplicación de este método? P.ej. Si quiero comprobar lo que se establecieron las cookies, o leer otras propiedades en la solicitud:

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

Respuesta

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; 
+0

Gran respuesta - muchas gracias :) –

Cuestiones relacionadas