Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   delphi validar si url esta activa (https://www.clubdelphi.com/foros/showthread.php?t=95477)

vroa74 26-11-2021 20:46:42

delphi validar si url esta activa
 
Buen dia:

he estado buscando la forma en la cual puedo saber si una url esta activa ya que necesito que me devuelva un valor si esta activa o no lo esta ya que tengo una base de datos de url las cual necesitoverificar.

he visto algunos post mas nada en concreto. no he logrado separar la url activo del error 404.
espero que alguno de ustedes me pueda ayudar.

Casimiro Notevi 26-11-2021 20:58:08

Normalmente te devuelve un valor: 200 ok, 404 not found, etc...

Neftali [Germán.Estévez] 29-11-2021 10:46:37

¿Valdría con un PING?

delphi.com.ar 29-11-2021 16:01:48

Lo primero que se me ocurre es hacer un GET a la URL y si no falla, "parsear" la respuesta para ver si contiene un texto de un breve diccionario de errores. Pero el problema que tienes actualmente, es que los servidores Web por ser amigables con el usuario, primero dejaron de responder errores para representarlos de forma amigable, y segundo te puedes encontrar con mensajes muy disparatados como: "Ups, algo no está bien".


Código Delphi [-]
uses
  System.SysUtils, HTTPApp, IdHTTP;

function CheckURI(AURL: string): boolean;
var
  HTTP: TIdHTTP;
begin
  try
     HTTP := TIdHTTP.Create;
     try
       HTTP.HandleRedirects := false;
       result := FuncionParaEvaluarResultado(HTTP.Get(AURL))
     finally
        HTTP.Destroy;
     end;
  except
     result := false;
  end;
end;

En ese ejemplo, la función inexistente "FuncionParaEvaluarResultado", sería la encargada de buscar según un diccionario, palabras y frases que indiquen error, y es muy importante tener en cuenta, que el resultado no va a ser estrictamente cierto, por ejemplo si incluís la URI a este hilo, y encontrarás en la respuesta del servidor el texto 404, si bien el servidor pudo encontrar el hilo.

vroa74 08-12-2021 21:43:25

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 544233)
¿Valdría con un PING?

La validación por ping no me funciona ya que tengo que verificar si un archivo de una dirección ulr esta disponible
un ejemplo seria valida : http://www.mundomanuales.com/manuales/curso-Delphi.pdf que el archivo esta disponible.

Casimiro Notevi 09-12-2021 10:14:45

Puedes usar herramientas como wget para descargar lo que quieras y te devuelven el error si no existe, ejemplo:



Neftali [Germán.Estévez] 09-12-2021 10:33:22

Cita:

Empezado por vroa74 (Mensaje 544367)
La validación por ping no me funciona ya que tengo que verificar si un archivo de una dirección ulr esta disponible
un ejemplo seria valida : http://www.mundomanuales.com/manuales/curso-Delphi.pdf que el archivo esta disponible.


Es que es diferente comprobar una URL como comentaste al inicio que la existencia de un fichero.
Puedes usar las Indy con un código como este:

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
var
  ResponseCode:integer;
  ContentLength:int64;
begin
  IdHTTP1.Head(Edit1.Text {URL});  // URL= http://www.mundomanuales.com/manuales/curso-Delphi.pdf 
  ResponseCode :=  IdHTTP1.Response.ResponseCode; // 200 = OK etc
  ContentLength := IdHTTP1.Response.ContentLength;
end;


Lo único que se me ocurre es que podría ser que detectes que el fichewro existe, pero que luego no puedas descargarlo (porque el servidor decida que no tienes permiso para ello -no estoy 100% seguro de qe esa posibilidad pueda darse-).


La franja horaria es GMT +2. Ahora son las 10:54:30.

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