Perl
Perl
Google Maps Geolocation Request
See more REST Examples
Demonstrates how make a Google Maps Geolocation REST API request.Chilkat Perl Downloads
use chilkat();
$success = 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.
$rest = chilkat::CkRest->new();
# Connect to the Google API REST server.
$bTls = 1;
$port = 443;
$bAutoReconnect = 1;
$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() == 0) {
print $rest->lastErrorText() . "\r\n";
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 = " . $rest->get_ResponseStatusCode() . "\r\n";
print "response status text = " . $rest->responseStatusText() . "\r\n";
print "response header: " . $rest->responseHeader() . "\r\n";
print "response JSON: " . $responseJson . "\r\n";
print "---" . "\r\n";
print "LastRequestStartLine: " . $rest->lastRequestStartLine() . "\r\n";
print "LastRequestHeader: " . $rest->lastRequestHeader() . "\r\n";
exit;
}
$json->put_EmitCompact(0);
print "JSON request body: " . $json->emit() . "\r\n";
# The JSON response should look like this:
# {
# "location": {
# "lat": 37.4248297,
# "lng": -122.07346549999998
# },
# "accuracy": 1145.0
# }
print "JSON response: " . $responseJson . "\r\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 . "\r\n";
$longitude = $jsonLoc->stringOf("lng");
print "longitude = " . $longitude . "\r\n";
$accuracy = $jsonResp->stringOf("accuracy");
print "accuracy = " . $accuracy . "\r\n";