Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Need to automate getting a file from the web
Message
From
16/09/2005 10:45:27
 
 
To
16/09/2005 10:21:53
Scott Sherman
Puyallup Tribal Health Authority
Tacoma, Washington, United States
General information
Forum:
Visual FoxPro
Category:
Internet applications
Environment versions
Visual FoxPro:
VFP 6 SP5
OS:
Windows XP SP2
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01050252
Message ID:
01050257
Views:
27
>I need to retrieve a text file from the internet. How do I get FoxPro 6.0 to download the below file without user intervention?
>
>http://www.fededirectory.frb.org/FedACHdir.txt
>
>Scott Sherman

Short version, with minimal error handling
Function getfilefromurl
Lparameters lcRemoteFile,lcLocalFile
Local lnReturn
Declare Integer URLDownloadToFile In urlmon.Dll;
  INTEGER pCaller, String szURL, String szFileName,;
  INTEGER dwReserved, Integer lpfnCB
lnReturn = URLDownloadToFile (0, lcRemoteFile, lcLocalFile, 0, 0)
Return lnReturn=0
Long version
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)

* debugging line - uncomment to see URL handle
* WAIT WINDOW "URL Handle: " + LTRIM(STR(hUrlFile))

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
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform