[AccessD] Retrieve data from a URL.

Stuart McLachlan stuart at lexacorp.com.pg
Mon Feb 15 16:03:59 CST 2010


If you are talking about using the URLDownloadToFile API function to get some XML into a 
file, it is a bit roundabout, but it's actually not that complicated, it's very fast and it'sby far the 
easiest way I've found to do it.

See example below of looking up the location of an IP address using this technique

-- 
Stuart

On 15 Feb 2010 at 12:19, Doug Steele wrote:
> 
> Application.FollowHyperlink "
> http://api.toodledo.com/api.php?method=getToken;userid=td4b703588b0844"
> 
> Then I just get an Internet Explorer window with the xml showing it it.  I
> found some code on the web which gets Yahoo stock prices saves them into a
> text file, reads the file and parses it, but that seems a bit roundabout.
> 


Option Compare Database
Option Explicit

Declare Function URLDownloadToFile Lib "urlmon" _
   Alias "URLDownloadToFileA" _
  (ByVal pCaller As Long, _
   ByVal szURL As String, _
   ByVal szFileName As String, _
   ByVal dwReserved As Long, _
   ByVal lpfnCB As Long) As Long
   
Const ERROR_SUCCESS As Long = 0
Const BINDF_GETNEWESTVERSION As Long = &H10

Function GetIPLoc(IP As String) As String
'Gets CountryName for an IP address from the online
'database at http://www.ipinfodb.com
   Dim strSourceUrl As String
   Dim strLocalFile As String
   Dim hfile As Long
   Dim strText As String
   
   strLocalFile = "c:\deleteme.htm"
   strSourceUrl = "http://www.ipinfodb.com/ip_query.php?ip=" _
         & IP & "&output=xml"

'Get URL
   If URLDownloadToFile(0&, _
        strSourceUrl, strLocalFile, _
        BINDF_GETNEWESTVERSION, _
        0&) = ERROR_SUCCESS Then
      hfile = FreeFile
'Read in data from temp file
      Open strLocalFile For Binary As #hfile
         strText = Space$(LOF(hfile))
         Get hfile, , strText
      Close #hfile
'Delete temporary file
      Kill strLocalFile
Debug.Print strText
'Pares Country name out of returned XML
      strText = Mid$(strText, InStr(strText, "<CountryName>") + 13)
      strText = Left$(strText, InStr(strText, "</CountryName>") - 1)
      GetIPLoc = strText
      
   End If
End Function




More information about the AccessD mailing list