Lianja
Lianja
Google Maps Geolocation Request
See more REST Examples
Demonstrates how make a Google Maps Geolocation REST API request.Chilkat Lianja Downloads
llSuccess = .F.
// 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("CkRest")
// Connect to the Google API REST server.
llBTls = .T.
lnPort = 443
llBAutoReconnect = .T.
llSuccess = loRest.Connect("www.googleapis.com",lnPort,llBTls,llBAutoReconnect)
// 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("CkJsonObject")
loJson.AppendInt("homeMobileCountryCode",310)
loJson.AppendInt("homeMobileNetworkCode",260)
loJson.AppendString("radioType","gsm")
loJson.AppendString("carrier","T-Mobile")
loACellTowers = createobject("CkJsonArray")
loJson.AppendArray2("cellTowers",loACellTowers)
loOCellTower = createobject("CkJsonObject")
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("CkJsonArray")
loJson.AppendArray2("wifiAccessPoints",loAWifi)
loOPoint = createobject("CkJsonObject")
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 = .F.) then
? loRest.LastErrorText
release loRest
release loJson
release loACellTowers
release loOCellTower
release loAWifi
release loOPoint
return
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
return
endif
loJson.EmitCompact = .F.
? "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("CkJsonObject")
loJsonResp.Load(lcResponseJson)
loJsonLoc = createobject("CkJsonObject")
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