Sample code for 30+ languages & platforms
Visual FoxPro

Google Maps Geolocation Request

See more REST Examples

Demonstrates how make a Google Maps Geolocation REST API request.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL lnBTls
LOCAL lnPort
LOCAL lnBAutoReconnect
LOCAL loJson
LOCAL loACellTowers
LOCAL loOCellTower
LOCAL loAWifi
LOCAL loOPoint
LOCAL lcResponseJson
LOCAL loJsonResp
LOCAL loJsonLoc
LOCAL lcLatitude
LOCAL lcLongitude
LOCAL lcAccuracy

lnSuccess = 0

* This example duplicates the following CURL request:
* curl -d @your_filename.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY"

* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loRest = CreateObject('Chilkat.Rest')

* Connect to the Google API REST server.
lnBTls = 1
lnPort = 443
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("www.googleapis.com",lnPort,lnBTls,lnBAutoReconnect)

* Add the Content-Type request header.
loRest.AddHeader("Content-Type","application/json")

* Add your API key as a query parameter
loRest.AddQueryParam("key","YOUR_API_KEY")

* The JSON query is contained in the body of the HTTP POST.
* This is a sample query (which we'll dynamically build in this example)
* { 
*  "homeMobileCountryCode": 310,
*  "homeMobileNetworkCode": 260,
*  "radioType": "gsm",
*  "carrier": "T-Mobile",
*  "cellTowers": [
*   {
*    "cellId": 39627456,
*    "locationAreaCode": 40495,
*    "mobileCountryCode": 310,
*    "mobileNetworkCode": 260,
*    "age": 0,
*    "signalStrength": -95
*   }
*  ],
*  "wifiAccessPoints": [
*   { 
*    "macAddress": "01:23:45:67:89:AB",
*    "signalStrength": 8,
*    "age": 0,
*    "signalToNoiseRatio": -65,
*    "channel": 8
*   },
*   { 
*    "macAddress": "01:23:45:67:89:AC",
*    "signalStrength": 4,
*    "age": 0
*   }
*  ]
* }

loJson = CreateObject('Chilkat.JsonObject')
loJson.AppendInt("homeMobileCountryCode",310)
loJson.AppendInt("homeMobileNetworkCode",260)
loJson.AppendString("radioType","gsm")
loJson.AppendString("carrier","T-Mobile")

loACellTowers = CreateObject('Chilkat.JsonArray')
loJson.AppendArray2("cellTowers",loACellTowers)

loOCellTower = CreateObject('Chilkat.JsonObject')
loACellTowers.AddObjectAt2(0,loOCellTower)
loOCellTower.AppendInt("cellId",39627456)
loOCellTower.AppendInt("locationAreaCode",40495)
loOCellTower.AppendInt("mobileCountryCode",310)
loOCellTower.AppendInt("mobileNetworkCode",260)
loOCellTower.AppendInt("age",0)
loOCellTower.AppendInt("signalStrength",-95)

loAWifi = CreateObject('Chilkat.JsonArray')
loJson.AppendArray2("wifiAccessPoints",loAWifi)

loOPoint = CreateObject('Chilkat.JsonObject')
loAWifi.AddObjectAt2(0,loOPoint)
loOPoint.AppendString("macAddress","01:23:45:67:89:AB")
loOPoint.AppendInt("signalStrength",8)
loOPoint.AppendInt("age",0)
loOPoint.AppendInt("signalToNoiseRatio",-65)
loOPoint.AppendInt("channel",8)

loAWifi.AddObjectAt2(1,loOPoint)
loOPoint.AppendString("macAddress","01:23:45:67:89:AC")
loOPoint.AppendInt("signalStrength",4)
loOPoint.AppendInt("age",0)

lcResponseJson = loRest.FullRequestString("POST","/geolocation/v1/geolocate",loJson.Emit())
IF (loRest.LastMethodSuccess = 0) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loJson
    RELEASE loACellTowers
    RELEASE loOCellTower
    RELEASE loAWifi
    RELEASE loOPoint
    CANCEL
ENDIF

* When successful, the response code is 200.
IF (loRest.ResponseStatusCode <> 200) THEN
    * Examine the request/response to see what happened.
    ? "response status code = " + STR(loRest.ResponseStatusCode)
    ? "response status text = " + loRest.ResponseStatusText
    ? "response header: " + loRest.ResponseHeader
    ? "response JSON: " + lcResponseJson
    ? "---"
    ? "LastRequestStartLine: " + loRest.LastRequestStartLine
    ? "LastRequestHeader: " + loRest.LastRequestHeader
    RELEASE loRest
    RELEASE loJson
    RELEASE loACellTowers
    RELEASE loOCellTower
    RELEASE loAWifi
    RELEASE loOPoint
    CANCEL
ENDIF

loJson.EmitCompact = 0
? "JSON request body: " + loJson.Emit()

* The JSON response should look like this:
* { 
*  "location": {
*   "lat": 37.4248297,
*   "lng": -122.07346549999998
*  },
*  "accuracy": 1145.0
* }

? "JSON response: " + lcResponseJson

loJsonResp = CreateObject('Chilkat.JsonObject')
loJsonResp.Load(lcResponseJson)

loJsonLoc = CreateObject('Chilkat.JsonObject')
loJsonResp.ObjectOf2("location",loJsonLoc)

* Any JSON value can be obtained as a string..
lcLatitude = loJsonLoc.StringOf("lat")
? "latitude = " + lcLatitude
lcLongitude = loJsonLoc.StringOf("lng")
? "longitude = " + lcLongitude

lcAccuracy = loJsonResp.StringOf("accuracy")
? "accuracy = " + lcAccuracy

RELEASE loRest
RELEASE loJson
RELEASE loACellTowers
RELEASE loOCellTower
RELEASE loAWifi
RELEASE loOPoint
RELEASE loJsonResp
RELEASE loJsonLoc