12 de enero de 2013

Saber si una URL existe

Esta función, sirve para saber si una URL está en funcionamiento o existe en el momento de su ejecución:

?ExisteURL("http://www.webservicex.net/globalweather.asmx?WSDL")
?ExisteURL("http://www.noexiste.net/")

*-----------------------------------------------------
FUNCTION ExisteURL(tcURL)
*-----------------------------------------------------
* Esta función se utiliza para saber si una URL existe 
* o está funcionando en este momento, utiliza cURL.exe
* para realizarlo (http://curl.haxx.se/)
*
* Recibe de parámetro la url a validar y regresa un 
* lógico que indica si se encontró la URL o no.
*-----------------------------------------------------

 IF !FILE("curl.exe")
  * --- Debes tener el cURL y sus dlls en el directorio de trabajo ---
  RETURN .F.
 ENDIF 

 lRet = .F.
 * --- Se declara una variable que contendría el contenido de la página web o wsdl --- 
 sFile = ADDBS(SYS(2023)) + SYS(2015)+".txt"
 * --- Se prepara un bat que invoca al cURL ---
 TEXT TO xBAT NOSHOW ADDITIVE TEXTMERGE PRETEXT 7
 echo off
 cd <<SYS(5)+CURDIR()>>
 curl.exe <<ALLTRIM(tcURL)>> >> <<sFile>>
 ENDTEXT
 * --- Se almacena en un bat ---
 uidBat = ADDBS(SYS(2023)) + SYS(2015) + [.bat]
 STRTOFILE(xBAT,uidBat)
 * --- Ejecutamos el bat ---
 oShell = createobject("WScript.Shell") 
 oShell.Run(uidBat,0,.T.) 
 RELEASE oShell 
 DELETE FILE (uidBat) 
 * --- Si no creo el archivo resultado ocurrió un error con cURL ---
 IF !FILE(sFile)
  lRet = .F.
 ELSE
  * --- Si existe el archivo y su longitud es diferente de 0, la url existe! ---
  lcFile = FILETOSTR(sFile)
  lRet = (LEN(lcFile) > 0 )
  DELETE FILE (sFile)
 ENDIF 
 RETURN lRet 
ENDFUNC 
*-----------------------------------------------------

Hasta la próxima!!

Baltazar Moreno
Guadalajara, Jalisco, México

No hay comentarios. :

Publicar un comentario