Sample code for 30+ languages & platforms
CkPython Requires Chilkat v11.1.0+

Google Maps Geolocation Request

See more REST Examples

Demonstrates how make a Google Maps Geolocation REST API request.

Chilkat CkPython Downloads

CkPython
import sys
import chilkat

success = False

#  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.

rest = chilkat.CkRest()

#  Connect to the Google API REST server.
bTls = True
port = 443
bAutoReconnect = True
success = rest.Connect("www.googleapis.com",port,bTls,bAutoReconnect)

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

#  Add your API key as a query parameter
rest.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
#    }
#   ]
#  }

json = chilkat.CkJsonObject()
json.AppendInt("homeMobileCountryCode",310)
json.AppendInt("homeMobileNetworkCode",260)
json.AppendString("radioType","gsm")
json.AppendString("carrier","T-Mobile")

aCellTowers = chilkat.CkJsonArray()
json.AppendArray2("cellTowers",aCellTowers)

oCellTower = chilkat.CkJsonObject()
aCellTowers.AddObjectAt2(0,oCellTower)
oCellTower.AppendInt("cellId",39627456)
oCellTower.AppendInt("locationAreaCode",40495)
oCellTower.AppendInt("mobileCountryCode",310)
oCellTower.AppendInt("mobileNetworkCode",260)
oCellTower.AppendInt("age",0)
oCellTower.AppendInt("signalStrength",-95)

aWifi = chilkat.CkJsonArray()
json.AppendArray2("wifiAccessPoints",aWifi)

oPoint = chilkat.CkJsonObject()
aWifi.AddObjectAt2(0,oPoint)
oPoint.AppendString("macAddress","01:23:45:67:89:AB")
oPoint.AppendInt("signalStrength",8)
oPoint.AppendInt("age",0)
oPoint.AppendInt("signalToNoiseRatio",-65)
oPoint.AppendInt("channel",8)

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

responseJson = rest.fullRequestString("POST","/geolocation/v1/geolocate",json.emit())
if (rest.get_LastMethodSuccess() == False):
    print(rest.lastErrorText())
    sys.exit()

#  When successful, the response code is 200.
if (rest.get_ResponseStatusCode() != 200):
    #  Examine the request/response to see what happened.
    print("response status code = " + str(rest.get_ResponseStatusCode()))
    print("response status text = " + rest.responseStatusText())
    print("response header: " + rest.responseHeader())
    print("response JSON: " + responseJson)
    print("---")
    print("LastRequestStartLine: " + rest.lastRequestStartLine())
    print("LastRequestHeader: " + rest.lastRequestHeader())
    sys.exit()

json.put_EmitCompact(False)
print("JSON request body: " + json.emit())

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

print("JSON response: " + responseJson)

jsonResp = chilkat.CkJsonObject()
jsonResp.Load(responseJson)

jsonLoc = chilkat.CkJsonObject()
jsonResp.ObjectOf2("location",jsonLoc)

#  Any JSON value can be obtained as a string..
latitude = jsonLoc.stringOf("lat")
print("latitude = " + latitude)
longitude = jsonLoc.stringOf("lng")
print("longitude = " + longitude)

accuracy = jsonResp.stringOf("accuracy")
print("accuracy = " + accuracy)