Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Download file from the internet
Message
De
16/08/2005 03:28:26
 
 
À
16/08/2005 01:57:43
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Versions des environnements
Visual FoxPro:
VFP 6 SP5
Divers
Thread ID:
01037397
Message ID:
01041225
Vues:
32
Vim,

one option, not tested
lcTempfile=ADDBS(SYS(2023))+ SUBSTR(SYS(2015),3)
=Getfilefromurl(yoururl,lcTempfile)
lcContents=filetostr(lcTempfile)
erase (lcTempfile)
Or this function, which is much longer due to more error checking, it can be shortened a lot.

lcContents=getdatafromurl(yoururl)
Function getdatafromurl
Lparameters pcUrlName
Declare Integer InternetOpen In wininet.Dll String sAgent, ;
  INTEGER lAccessType, String sProxyName, ;
  STRING sProxyBypass, Integer lFlags
Declare Integer InternetOpenUrl In wininet.Dll ;
  INTEGER hInternetSession, String sUrl, String sHeaders,;
  INTEGER lHeadersLength, Integer lFlags, Integer lContext
Declare Integer InternetReadFile In wininet.Dll Integer hfile, ;
  STRING @sBuffer, Integer lNumberofBytesToRead, Integer @lBytesRead
Declare short InternetCloseHandle In wininet.Dll Integer hInst
#Define INTERNET_OPEN_TYPE_PRECONFIG 0
#Define INTERNET_OPEN_TYPE_DIRECT 1
#Define INTERNET_OPEN_TYPE_PROXY 3
#Define SYNCHRONOUS 0
#Define INTERNET_FLAG_RELOAD 2147483648
#Define CR Chr(13)
Local lsAgent, lhInternetSession, lhUrlFile, llOk, lnOk, lcRetVal, lcReadBuffer, lnBytesRead
* what application is using Internet services?
lsAgent = "VPF 5.0"
lhInternetSession = InternetOpen( lsAgent, INTERNET_OPEN_TYPE_PRECONFIG, ;
  '', '', SYNCHRONOUS)
* debugging line - uncomment to see session handle
* WAIT WINDOW "Internet session handle: " + LTRIM(STR(hInternetSession))
If lhInternetSession = 0
  Wait Window "Internet session cannot be established" Time 2
  Return .Null.
Endif
lhUrlFile = InternetOpenUrl( lhInternetSession, pcUrlName, '', 0, ;
  INTERNET_FLAG_RELOAD, 0)
If lhUrlFile = 0
  Wait Window "URL cannot be opened"
  Return .Null.
Endif

lcRetVal = ""
llOk = .T.

Do While llOk
* set aside a big buffer
  lsReadBuffer = Space(32767)
  lnBytesRead = 0
  lnOk = InternetReadFile( lhUrlFile, @lsReadBuffer, Len(lsReadBuffer), @lnBytesRead)

  If ( lnBytesRead > 0 )
    lcRetVal = lcRetVal + Left( lsReadBuffer, lnBytesRead )
  Endif

* error trap - either a read failure or read past eof()
  llOk = ( lnOk = 1 ) And ( lnBytesRead > 0 )
Enddo

* close all the handles we opened
InternetCloseHandle( lhUrlFile )
InternetCloseHandle( lhInternetSession )
Clear Dlls InternetOpen,InternetCloseHandle,InternetOpenUrl ,InternetReadFile
* return the URL contents
Return lcRetVal
>Tore,
>
>Interesting function and much cleaner than spawning IE. How do I change it such that it returns a string rather than saving to a a file by default?
>
>Thanks,
>
>Vim
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform