Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Getting *.csv from Yahoo!Finance
Message
De
21/08/2006 02:29:27
 
 
À
21/08/2006 02:17:48
Aaron K. Y. Chu
Health & Care Co. Ltd.
Hong Kong, Hong Kong
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
01147188
Message ID:
01147190
Vues:
26
>Dear All,
>
>How to download an information from Yahoo!Finance via the following link:
>http://hk.finance.yahoo.com/d/quotes.csv?s=0179.HK&f=sl1d1t1c1ohgv&e=.csv
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

  INTERNET_OPEN_TYPE_PRECONFIG =0
  INTERNET_OPEN_TYPE_DIRECT =1
  INTERNET_OPEN_TYPE_PROXY =3
  SYNCHRONOUS =0
  INTERNET_FLAG_RELOAD =2147483648
  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" TIMEOUT 1
    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
ENDFUNC
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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform