Page 1 of 2
Descarga desde https SOLUCIONADO
Posted: Mon Sep 02, 2019 12:40 am
by FranciscoA
Hola amigos.
Estoy probando descarga de ficheros desde una URL.
Se que hay bastante informacion en el foro, y por supuesto, desde aquí he tomado muestras para lo que codifiqué.
El siguiente codigo compila y se ejecuta, pero el bendito fichero (supuestamente descargado) no está por ningún lado.
Pueden decirme que he omitido, o hago mal, en el ejemplo siguiente?
Code: Select all
function DescargFichDesdeUrl()
local cFile := "d:\fapsoft_foro\franco.png"
local cUrl := "https://bitbucket.org/fivetech/fivewin-contributions/downloads/Fivetechv.png"
? DELETEURLCACHEENTRY( cUrl ) //Retorna .f.
? URLDOWNLOADTOFILE( 0, cUrl, cFile ) //Retorna -2146697208
RETURN NIL
DLL STATIC FUNCTION DELETEURLCACHEENTRY( cUrl AS LPSTR ) AS BOOL;
PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll"
DLL FUNCTION URLDOWNLOADTOFILE( pCaller AS LONG, cUrl AS LPSTR, cFileName AS LPSTR, nReserved AS DWORD, nFnCB AS LONG ) AS LONG;
PASCAL FROM "URLDownloadToFileA" LIB "urlmon.dll"
Saludos.
PD: Solucion en
http://fivetechsupport.com/forums/viewt ... 43#p225509
Re: Descarga desde https
Posted: Mon Sep 02, 2019 1:23 pm
by karinha
Code: Select all
#include "FiveWin.ch"
function DescargFichDesdeUrl()
//local cFile := "d:\fapsoft_foro\franco.png" // ERRO: NOMBRE ERRADO.
LOCAL cFile := "C:\Download\Fivetechv.png" // Nombre correcto.
LOCAL cUrl := "https://bitbucket.org/fivetech/fivewin-contributions/downloads/Fivetechv.png"
? DELETEURLCACHEENTRY( cUrl ) // Retorna .T.
// Mira C:\Downlod -> Fivetechv.png
URLDOWNLOADTOFILE( 0, cUrl, cFile )
RETURN NIL
DLL FUNCTION DELETEURLCACHEENTRY( cUrl AS LPSTR ) AS BOOL ;
PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll"
DLL FUNCTION URLDOWNLOADTOFILE( pCaller AS LONG, cUrl AS LPSTR, cFileName AS LPSTR, nReserved AS DWORD, nFnCB AS LONG ) AS LONG;
PASCAL FROM "URLDownloadToFileA" LIB "urlmon.dll"
Re: Descarga desde https
Posted: Mon Sep 02, 2019 3:28 pm
by FranciscoA
Joao, gracias por responder.
Hice lo que sugeriste, pero sigue lo mismo: no descarga el fichero.
Aqui está el código.
Lo raro es que Silvio usó mi código y tanto él como Ukoenig confirman que les funciona. No se por qué a mi no.
http://fivetechsupport.com/forums/viewt ... f3#p225433
- Funciona sólo en HARBOUR?
- Tengo que hacer alguna configuración en mi equipo?
- Algo mas?
Code: Select all
function DescargFichDesdeUrl()
local cFile := "c:\downloads\Fivetechv.png"
local cUrl := "https://bitbucket.org/fivetech/fivewin-contributions/downloads/Fivetechv.png"
? DELETEURLCACHEENTRY( cUrl )
? URLDOWNLOADTOFILE( 0, cUrl, cFile )
RETURN NIL
DLL STATIC FUNCTION DELETEURLCACHEENTRY( cUrl AS LPSTR ) AS BOOL;
PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll"
DLL FUNCTION URLDOWNLOADTOFILE( pCaller AS LONG, cUrl AS LPSTR, cFileName AS LPSTR, nReserved AS DWORD, nFnCB AS LONG ) AS LONG;
PASCAL FROM "URLDownloadToFileA" LIB "urlmon.dll"
Alguna otra idea?
Saludos.
Re: Descarga desde https
Posted: Mon Sep 02, 2019 4:19 pm
by karinha
Re: Descarga desde https
Posted: Mon Sep 02, 2019 4:51 pm
by karinha
Creo, sea tú versión.
Saludos.
Re: Descarga desde https
Posted: Mon Sep 02, 2019 5:14 pm
by FranciscoA
Joao.
Agradezco tu atención y tiempo.
Ya funcionó.
Lo probé con el sitio de Ukoenig y todo ok, por lo que deduzco que el fichero de fivetech del ejemplo no existe.
http://fivetechsupport.com/forums/viewt ... f3#p225433
Saludos.
Code: Select all
#include "FiveWin.ch"
function DescargFichDesdeUrl()
local nRet
*local cFile := "d:\fapsoft__foro\DcgaHttps\Fivetechv.png"
*local cUrl := "https://bitbucket.org/fivetech/fivewin-contributions/downloads/Fivetechv.png"
local cFile := "d:\fapsoft__foro\DcgaHttps\GDItest1_.zip"
local cUrl := "http://www.Pflegeplus.com/DOWNLOADS/Gditest1.zip"
DELETEURLCACHEENTRY( cUrl )
nRet := URLDOWNLOADTOFILE( 0, cUrl, cFile )
if nRet == 0
MsgInfo("Fichero guardado como " + cFile )
else
MsgStop("Fichero no fué descargado.","Error")
endif
RETURN NIL
DLL STATIC FUNCTION DELETEURLCACHEENTRY( cUrl AS LPSTR ) AS BOOL;
PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll"
DLL FUNCTION URLDOWNLOADTOFILE( pCaller AS LONG, cUrl AS LPSTR, cFileName AS LPSTR, nReserved AS DWORD, nFnCB AS LONG ) AS LONG;
PASCAL FROM "URLDownloadToFileA" LIB "urlmon.dll"
Re: Descarga desde https
Posted: Mon Sep 02, 2019 5:29 pm
by FranciscoA
FranciscoA wrote:
... por lo que deduzco que el fichero de fivetech del ejemplo no existe.
Corrijo: El fichero mencionado existe, pero no se por qué no lo descarga.
Saludos.
Re: Descarga desde https
Posted: Mon Sep 02, 2019 5:43 pm
by karinha
Aqui descarga bién. Saludos.
Re: Descarga desde https
Posted: Mon Sep 02, 2019 9:31 pm
by FranciscoA
Confirmo.
Hice pruebas con diversos sitios y funciona perfectamente con direcciones que empiezan con HTTP.
Es decir, no me funciona con direcciones HTTPS.
He "GooGleado" sobre esto, pero no he encontrado algo que me indique qué hacer. (solo explicación de que la diferencia entre estos dos es unicamente la seguridad)
¿Pueden orientarme al respecto?.
Saludos.
Re: Descarga desde https
Posted: Tue Sep 03, 2019 12:42 pm
by karinha
Re: Descarga desde https
Posted: Tue Sep 03, 2019 4:35 pm
by FranciscoA
Karinha, gracias por el link.
El codigo donde llama a URLDOWNLOADTOFILE es igual al mio.
Ahi usan http, y el problema mio es con [b
]https[/b].
Puedes probar el siguiente codigo con
FW 1204, por favor?
Code: Select all
#include "FiveWin.ch"
function DescargFichDesdeUrl()
local cFile, cUrl, aFich :={},aFiles:={}
cFile := "c:\download\Fivetechv.png"
cUrl := "https://bitbucket.org/fivetech/fivewin-contributions/downloads/Fivetechv.png" // HTTPS
aadd(aFich,{cUrl,cFile})
cFile := "c:\download\PruebaGDI_.zip"
cUrl := "http://www.Pflegeplus.com/DOWNLOADS/Gditest1.zip" // http
aadd(aFich,{cUrl,cFile})
AEval(aFich,{|a,n| Descargando( aFich[n,1],aFich[n,2],aFiles ) })
XBROWSE( aFiles, "DESCARGAS" )
RETURN NIL
//--------------------------------------------------------//
Function Descargando(cUrl,cFile,aFiles)
local nRet
MsgRun("Aguarde por favor, descargando...",,{|| ;
DELETEURLCACHEENTRY( cUrl ) ,;
nRet := URLDOWNLOADTOFILE( 0, cUrl, cFile ), SysRefresh() })
if nRet == 0
aadd( aFiles,{cUrl, cFile} )
else
aadd( aFiles,{cUrl, "Descarga ha fallado" +" INET_E_DOWNLOAD_FAILURE (0x800C0008L or -2146697208)" } )
MsgInfo(nRet,"Error INET")
endif
RETURN NIL
DLL STATIC FUNCTION DELETEURLCACHEENTRY( cUrl AS LPSTR ) AS BOOL;
PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll"
DLL FUNCTION URLDOWNLOADTOFILE( pCaller AS LONG, cUrl AS LPSTR, cFileName AS LPSTR, nReserved AS DWORD, nFnCB AS LONG ) AS LONG;
PASCAL FROM "URLDownloadToFileA" LIB "urlmon.dll"
Gracias.
Re: Descarga desde https
Posted: Tue Sep 03, 2019 5:08 pm
by karinha
No tengo tú versión Francisco. Mira, funciona bién.

Re: Descarga desde https
Posted: Tue Sep 03, 2019 5:12 pm
by karinha
Code: Select all
#include "FiveWin.ch"
function DescargFichDesdeUrl()
local cFile, cUrl, aFich :={},aFiles:={}
cFile := "c:\download\Fivetechv.png" // funciona.
cUrl := "https://bitbucket.org/fivetech/fivewin-contributions/downloads/Fivetechv.png" // HTTPS
aadd(aFich,{cUrl,cFile})
cFile := "c:\download\PruebaGDI_.zip" // funciona
// cFile := "c:\download\Gditest1.zip" // funciona
cUrl := "http://www.Pflegeplus.com/DOWNLOADS/Gditest1.zip" // http
aadd(aFich,{cUrl,cFile})
AEval(aFich,{|a,n| Descargando( aFich[n,1],aFich[n,2],aFiles ) })
XBROWSE( aFiles, "DESCARGAS" )
RETURN NIL
//--------------------------------------------------------//
Function Descargando(cUrl,cFile,aFiles)
local nRet
MsgRun("Aguarde por favor, descargando...",,{|| ;
DELETEURLCACHEENTRY( cUrl ) ,;
nRet := URLDOWNLOADTOFILE( 0, cUrl, cFile ), SysRefresh() })
if nRet == 0
aadd( aFiles,{cUrl, cFile} )
else
aadd( aFiles,{cUrl, "Descarga ha fallado" +" INET_E_DOWNLOAD_FAILURE (0x800C0008L or -2146697208)" } )
MsgInfo(nRet,"Error INET")
endif
RETURN NIL
DLL STATIC FUNCTION DELETEURLCACHEENTRY( cUrl AS LPSTR ) AS BOOL;
PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll"
DLL FUNCTION URLDOWNLOADTOFILE( pCaller AS LONG, cUrl AS LPSTR, cFileName AS LPSTR, nReserved AS DWORD, nFnCB AS LONG ) AS LONG;
PASCAL FROM "URLDownloadToFileA" LIB "urlmon.dll"
Re: Descarga desde https
Posted: Tue Sep 03, 2019 5:35 pm
by FranciscoA
Joao:
Muchas gracias por tu colaboración.
Voy a presentar el codigo a colegas que puedan tener la version FW 1204.
Saludos.
Re: Descarga desde https
Posted: Tue Sep 03, 2019 7:44 pm
by Sistem
deve ser algo no host
If DowlFile("
https://bitbucket.org/fivetech/fivewin- ... etechv.png", "e:\Fivetechv.png") // Retorna NAO OK
? "ok"
Else
? "NAO OK"
Endif
If DowlFile("
http://www.Pflegeplus.com/DOWNLOADS/Gditest1.zip", "e:\Fivetechv.png") // RETORNA OK
? "ok
Else
? "NAO OK"
Endif
//--------------------------------------------------------------------------------
Function DowlFile(cLink, cDest)
Local oXMLHTTP, oADODBStream, lOk:=.f.
oXMLHTTP := CREATEOBJECT( "Microsoft.XMLHTTP" )
oADODBStream := CREATEOBJECT( "Adodb.Stream" )
oXMLHTTP:Open( "GET", cLink, .f. )
oXMLHTTP:Send()
If oXMLHTTP:Status() == 200
oADODBStream:Type := 1
oADODBStream:Open()
oADODBStream:Write( oXMLHTTP:ResponseBody )
oADODBStream:SaveToFile( cDest, 2 )
// MsgAlert("Download feito, ok", "Aviso")
lOk:=.t.
Else
// MsgAlert("Erro com download", "Aviso")
lOk:=.f.
Endif
Return lOk