Descarga desde https SOLUCIONADO

User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Descarga desde https SOLUCIONADO

Post 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 | Expand

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
viewtopic.php?f=6&t=37703&sid=3cb5f50584b22e3c0c729b3083809143#p225509
Last edited by FranciscoA on Sun Sep 08, 2019 2:33 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Descarga desde https

Post by karinha »

Code: Select all | Expand


#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"
 
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Descarga desde https

Post 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.
viewtopic.php?f=3&t=37707&sid=b548dfcbeca847c11592025c75c134f3#p225433

- Funciona sólo en HARBOUR?
- Tengo que hacer alguna configuración en mi equipo?
- Algo mas?

Code: Select all | Expand

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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Descarga desde https

Post by karinha »

Image
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Descarga desde https

Post by karinha »

Creo, sea tú versión.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Descarga desde https

Post 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 | Expand


#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"
 
Last edited by FranciscoA on Tue Sep 03, 2019 5:33 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Descarga desde https

Post 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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Descarga desde https

Post by karinha »

Aqui descarga bién. Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Descarga desde https

Post 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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Descarga desde https

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Descarga desde https

Post 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 | Expand


#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.
Last edited by FranciscoA on Tue Sep 03, 2019 5:33 pm, edited 1 time in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Descarga desde https

Post by karinha »

No tengo tú versión Francisco. Mira, funciona bién.

Image
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
Posts: 7932
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Descarga desde https

Post by karinha »

Code: Select all | Expand


#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"
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Descarga desde https

Post by FranciscoA »

Joao:
Muchas gracias por tu colaboración.
Voy a presentar el codigo a colegas que puedan tener la version FW 1204.

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
Sistem
Posts: 226
Joined: Sun May 13, 2012 7:52 am

Re: Descarga desde https

Post by Sistem »

deve ser algo no host

If DowlFile("https://bitbucket.org/fivetech/fivewin-contributions/downloads/Fivetechv.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
FWH2008 | xHarbour | BCC74 | SQLRDD
Post Reply