delphi-blocks / WiRL

WiRL: RESTful Library for Delphi
https://wirl.delphiblocks.dev/
Apache License 2.0
238 stars 84 forks source link

Filters Demo #43

Closed maxcoros closed 9 months ago

maxcoros commented 2 years ago

Negli esempi dei filtri, c'è un filtro sulla response. Per come è implementato scrive nel form le info della request, ma se cambio e cerco di visualizzare le info della response non ottengo nulla. Ad esempio Response.Content è vuota.

Sbaglio qualcosa?

Questo è il filtro originale sulla response dell'esempio 10:

procedure TResponseLoggerFilter.Filter(ARequestContext: TWiRLContainerResponseContext); var LMessage: string; begin LMessage := DateTimeToStr(Now) + ' - ' + ARequestContext.Request.Method + ' ' + ARequestContext.Request.PathInfo; if ARequestContext.Request.Query <> '' then LMessage := LMessage + '?' + ARequestContext.Request.Query; FMainForm.Log('RES - ' + LMessage); end;

lminuti commented 2 years ago

Effettivamente Content non funziona. Prova così:

procedure TResponseLoggerFilter.Filter(
  ARequestContext: TWiRLContainerResponseContext);
var
  LMessage: string;
begin
  LMessage := DateTimeToStr(Now) + ' - ' + TEncoding.ANSI.GetString(ARequestContext.Response.RawContent);
  if ARequestContext.Request.Query <> '' then
    LMessage := LMessage + '?' + ARequestContext.Request.Query;
  FMainForm.Log('RES - ' + LMessage);
end;

Attenzione: togli la compressione dal demo (unit Server.Forms.Main) altrimenti ti logga i dati compressi.

maxcoros commented 2 years ago

Grazie, così funziona... :-)