En el Foro de la Comunidad de Visual FoxPro en Español, se tocó el tema, y bueno, se logra el objetivo con el siguiente código:
?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
*-----------------------------------------------------
El código compelto con cURL utilizado se puede descargar desde acá.
No hay comentarios.:
Publicar un comentario