Ruby
Ruby
Google Maps Geolocation Request
See more REST Examples
Demonstrates how make a Google Maps Geolocation REST API request.Chilkat Ruby Downloads
require '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.new()
# 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.new()
json.AppendInt("homeMobileCountryCode",310)
json.AppendInt("homeMobileNetworkCode",260)
json.AppendString("radioType","gsm")
json.AppendString("carrier","T-Mobile")
aCellTowers = Chilkat::CkJsonArray.new()
json.AppendArray2("cellTowers",aCellTowers)
oCellTower = Chilkat::CkJsonObject.new()
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.new()
json.AppendArray2("wifiAccessPoints",aWifi)
oPoint = Chilkat::CkJsonObject.new()
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() + "\n";
exit
end
# When successful, the response code is 200.
if (rest.get_ResponseStatusCode() != 200)
# Examine the request/response to see what happened.
print "response status code = " + rest.get_ResponseStatusCode().to_s() + "\n";
print "response status text = " + rest.responseStatusText() + "\n";
print "response header: " + rest.responseHeader() + "\n";
print "response JSON: " + responseJson + "\n";
print "---" + "\n";
print "LastRequestStartLine: " + rest.lastRequestStartLine() + "\n";
print "LastRequestHeader: " + rest.lastRequestHeader() + "\n";
exit
end
json.put_EmitCompact(false)
print "JSON request body: " + json.emit() + "\n";
# The JSON response should look like this:
# {
# "location": {
# "lat": 37.4248297,
# "lng": -122.07346549999998
# },
# "accuracy": 1145.0
# }
print "JSON response: " + responseJson + "\n";
jsonResp = Chilkat::CkJsonObject.new()
jsonResp.Load(responseJson)
jsonLoc = Chilkat::CkJsonObject.new()
jsonResp.ObjectOf2("location",jsonLoc)
# Any JSON value can be obtained as a string..
latitude = jsonLoc.stringOf("lat")
print "latitude = " + latitude + "\n";
longitude = jsonLoc.stringOf("lng")
print "longitude = " + longitude + "\n";
accuracy = jsonResp.stringOf("accuracy")
print "accuracy = " + accuracy + "\n";