Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-09-2011
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Ayuda con TidHTTP

Ando teniendo una duda sobre un codigo que vi en este mismo foro , el codigo es el siguiente

Código:
procedure TForm1.VerificarClick(Sender: TObject);
var
  IdHTTP: TIdHTTP;
  Response: String;
begin

  IdHTTP := nil;
  try

    IdHTTP := TIdHTTP.Create(nil);
    IdHTTP.Get(Trim(Edit1.Text));

    (* el edit1 tiene el link de descarga *)
    Response := IdHTTP.Get(Trim(Edit1.Text));

    Memo1.Text:= Response;

    if  IdHTTP.ResponseCode=404 then begin
    Label1.Caption:='link rroto';
   end else
    Label1.Caption:='link bueno';

  finally
    IdHTTP.Free;

  end;

end;
Mi duda es que cuando la pagina no existe el programa muestra error y se para ahi , mi duda es si se pueda evitar la ventana que dice "HTTP /1.1 404 Not Found." , que el error no se muestre y que el programa continue con sus labores como si nada hubiera pasado para poder seguir cargando otras paginas usando TidHTTP.


Perdon si no me exprese bien...
Responder Con Cita
  #2  
Antiguo 02-09-2011
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puedes "capturar" las posibles excepciones que lance el objeto "IdHttp", por ejemplo:

Código Delphi [-]
var
  http: TIdHttp;
begin
  http := TIdHttp.Create( nil );
  try
    try
      Memo1.Text:= http.Get( Trim( Edit1.Text ) );
    except
      // Por ejemplo "HTTP not found"
      on E : EIdHttpProtocolException do
      begin
        ShowMessage( E.Message );
      end;
      // Cualquier otro tipo de excepción
      on E : Exception do
      begin
        ShowMessage( E.Message );
      end;
    end;
  finally
    http.Free();
  end;
end;
Responder Con Cita
  #3  
Antiguo 04-09-2011
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Gracias por la respuesta me ha servido de mucho , pero ahora tengo otra duda porque tengo un array que verifica la existencia de todos los archivos en el array pero cuando
una pagina no existe automaticamente no sigue con los otros elementos de la lista y deja de escanear.

Código:
procedure TForm1.Button1Click(Sender: TObject);
const
  paginas:array[1..4] of string = ('index.php','noexisto.php','basura/noexisto','index.php');

var
  IdHTTP: TIdHTTP;
  i:integer;

begin


   try
    for i:= low(paginas) to High(paginas) do
    begin

    IdHTTP := nil;
    IdHTTP := TIdHTTP.Create(nil);
    IdHTTP.Get(Edit1.Text+'/'+paginas[i]);

    if  IdHTTP.ResponseCode=200 then begin
    Memo1.Lines.Add(Edit1.Text+'/'+paginas[i]);
    end;
    end;
    except
      on E : EIdHttpProtocolException do
      begin
      end;
      on E : Exception do
      begin
      end;
    end;
    end;
¿ Me podrias ayudar a arreglar el codigo ?
Responder Con Cita
  #4  
Antiguo 04-09-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Meté el try dentro del for:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
const
    paginas:array[1..4] of string = ('index.php','noexisto.php','basura/noexisto','index.php');

var
    IdHTTP: TIdHTTP;
    i:integer;
begin
    try
        IdHTTP := TIdHTTP.Create(nil);
        
        for i:= Low(paginas) to High(paginas) do
        try
            IdHTTP.Get(Edit1.Text+'/'+paginas[i]);

            if  IdHTTP.ResponseCode=200 then
                Memo1.Lines.Add(Edit1.Text+'/'+paginas[i]);
        except
            on E : EIdHttpProtocolException do {nothing!};
            on E : Exception do {nothing!};
        end;
    finally
        idHTTP.Free;
    end;
end;

He aplicado una pequeña reestructuración de tu código y he reparado una fuga de memoria que tenías en el. No estabas liberando el objeto idHTTP.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #5  
Antiguo 05-09-2011
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Y saca el "Create" fuera del "Try":

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
const
    paginas:array[1..4] of string = ('index.php','noexisto.php','basura/noexisto','index.php');

var
    IdHTTP: TIdHTTP;
    i:integer;
begin
    IdHTTP := TIdHTTP.Create(nil);
    try
        
        for i:= Low(paginas) to High(paginas) do
        try
            IdHTTP.Get(Edit1.Text+'/'+paginas[i]);

            if  IdHTTP.ResponseCode=200 then
                Memo1.Lines.Add(Edit1.Text+'/'+paginas[i]);
        except
            on E : EIdHttpProtocolException do {nothing!};
            on E : Exception do {nothing!};
        end;
    finally
        idHTTP.Free;
    end;
end;

¡Esto sí que es un mete-saca!
Responder Con Cita
  #6  
Antiguo 05-09-2011
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
gracias a los dos por la ayuda , me ha servido de mucho , pensar que hace un tiempo pense que esto era imposible xDDD.
Pero gracias a la magia de indy y la ayuda de ustedes esto es posible.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TidHttp con acentos keys Internet 3 29-07-2011 18:17:59
Ayuda urgente con Indy TIdHTTP Pugile C++ Builder 1 17-03-2011 12:21:04
TIDHTTP Con User y Pass Neeruu Varios 0 28-12-2009 13:36:49
Ayuda con incompatibilidad del Post de TIdHTTP de Indy 8 con Indy 10 rolandoj Internet 13 24-12-2008 13:19:01
TIdHTTP, dlls.... betto Internet 3 27-03-2007 21:49:03


La franja horaria es GMT +2. Ahora son las 23:16:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi