Ver Mensaje Individual
  #1  
Antiguo 05-04-2015
Galahad Galahad is offline
Miembro
 
Registrado: abr 2007
Posts: 266
Reputación: 20
Galahad Va por buen camino
llamada post con indy ,enlace con webbrowser

Hola, buenas tardes...

Estoy haciendo una peticion 'post' con los componentes indy a una página web de la agencia tributaria.
Dicha página devuelve, en caso de que sea correcta la llamada con todos los parámetros una página web con un archivo pdf
con una serie de datos fiscales, en caso de que sea incorrecta o el servicio no esté disponible devuelve una página html indicando el error.
La llamada funciona perfectamente, devuelve un memorystream al cual accedo con un webbrowser y me encuentro con el archivo pdf o la página html,
el problema es que necesitaria 'saber' antes de hacer el wb.navigate,, si el documento que voy a visualizar es de un tipo o de otro.
He estado mirando de 'parsear' el documento del webbrowser,, pero no he encontrado como hacerlo.
Este es el código, a ver si a alguien se le ocurre algo.
Un saludo y gracias anticipadas.
Código Delphi [-]
var fS: TFileStream;
     fName,ext: String;
     aStream: TMemoryStream;
     LHandler: TIdSSLIOHandlerSocketOpenSSL;
     Params :TStringStream;
     IdHTTP1 : TIdHTTP;
  begin 
     aStream := TMemoryStream.create;
     Params := TStringStream.create('');
     IdHTTP1:=TIdHTTP.Create(nil);
     LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
     IdHTTP1.IOHandler:=LHandler;
    with IdHTTP1 do
    begin
      Request.ContentType := 'application/x-www-form-urlencoded';
      try
         Post( ruta, Params, aStream);
         // pasamos el memorystream a un filestream
         fS := TFileStream.Create(fName,fmCreate);
         try
             astream.SaveToStream(fS);
         finally
             fS.Free;
         end;
         if fileExists(fname)then      
         begin
                 wb := TWebBrowser.Create( Panel2  );
                 TWinControl(wb).Parent := Panel2;
                 TWinControl(wb).Name := 'ValidAEAT';
                 wb.Align := alClient;
                 wb.Navigate( fname );  // aqui obtengo o el pdf dentro de la página o la pagina html indicando el error. 
                 
                 while wb.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages;
         end;
      except
         on E: Exception do
               showmessage('Se encontró un error al Validar/Procesar el fichero.');
      end;

    end;

Última edición por nlsgarcia fecha: 05-04-2015 a las 19:35:19. Razón: Sintaxis Delphi
Responder Con Cita