es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtro de respuesta Delphi Chromium CEF4

Hola compañeros de Stack Overflow,

He estado trasteando con CEF4, el filtro de respuesta, y tratando de capturar las respuestas json de los recursos cargados. Puedes encontrar una demo incluida aquí:

Pero parece que el problema sólo se activa una vez.

¿Hay alguna manera de hacer que se active una y otra vez, o cada vez sin tener que recargar la página?

    procedure TResponseFilterBrowserFrm.Filter_OnFilter(Sender: TObject;
  data_in: Pointer; data_in_size: NativeUInt; var data_in_read: NativeUInt;
  data_out: Pointer; data_out_size: NativeUInt;
  var data_out_written: NativeUInt; var aResult: TCefResponseFilterStatus);

No entiendo cómo se activa esto.

He intentado modificar:

function TResponseFilterBrowserFrm.IsMyResource(const aRequest
  : ICefRequest): Boolean;
var
  TempName: string;
begin

  Result := True;

end;

pero parece que sólo se activa una vez.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el procedimiento Filter_OnFilter que solo se activa una vez. Para hacer que se active una y otra vez, o cada vez sin recargar la página, puedes intentar usar el controlador de eventos OnResourceResponse en lugar de Filter_OnFilter.

    En el procedimiento Filter_OnFilter, estás filtrando la respuesta para una sola solicitud. Por otro lado, el controlador de eventos OnResourceResponse proporciona la respuesta para todos los recursos que carga el navegador.

    Por lo tanto, para capturar las respuestas JSON de los recursos cargados cada vez sin recargar la página, puedes intentar añadir el siguiente fragmento de código al controlador de eventos OnResourceResponse:

    if (Request.Url.EndsWith('.json', True)) then
    begin
      // procesar la respuesta JSON aquí
    end;
    

    Esto asegurará que cada vez que se cargue un recurso JSON, se ejecute el código dentro del bloque if.

    ¡Espero que esto te ayude!

Comments are closed.