Objective-C
Objective-C
Google Maps Geolocation Request
See more REST Examples
Demonstrates how make a Google Maps Geolocation REST API request.Chilkat Objective-C Downloads
#import <CkoRest.h>
#import <CkoJsonObject.h>
#import <CkoJsonArray.h>
#import <NSString.h>
BOOL success = NO;
// 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.
CkoRest *rest = [[CkoRest alloc] init];
// Connect to the Google API REST server.
BOOL bTls = YES;
int port = 443;
BOOL bAutoReconnect = YES;
success = [rest Connect: @"www.googleapis.com" port: [NSNumber numberWithInt: port] tls: bTls autoReconnect: bAutoReconnect];
// Add the Content-Type request header.
[rest AddHeader: @"Content-Type" value: @"application/json"];
// Add your API key as a query parameter
[rest AddQueryParam: @"key" value: @"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
// }
// ]
// }
CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json AppendInt: @"homeMobileCountryCode" value: [NSNumber numberWithInt: 310]];
[json AppendInt: @"homeMobileNetworkCode" value: [NSNumber numberWithInt: 260]];
[json AppendString: @"radioType" value: @"gsm"];
[json AppendString: @"carrier" value: @"T-Mobile"];
CkoJsonArray *aCellTowers = [[CkoJsonArray alloc] init];
[json AppendArray2: @"cellTowers" jarr: aCellTowers];
CkoJsonObject *oCellTower = [[CkoJsonObject alloc] init];
[aCellTowers AddObjectAt2: [NSNumber numberWithInt: 0] json: oCellTower];
[oCellTower AppendInt: @"cellId" value: [NSNumber numberWithInt: 39627456]];
[oCellTower AppendInt: @"locationAreaCode" value: [NSNumber numberWithInt: 40495]];
[oCellTower AppendInt: @"mobileCountryCode" value: [NSNumber numberWithInt: 310]];
[oCellTower AppendInt: @"mobileNetworkCode" value: [NSNumber numberWithInt: 260]];
[oCellTower AppendInt: @"age" value: [NSNumber numberWithInt: 0]];
[oCellTower AppendInt: @"signalStrength" value: [NSNumber numberWithInt: -95]];
CkoJsonArray *aWifi = [[CkoJsonArray alloc] init];
[json AppendArray2: @"wifiAccessPoints" jarr: aWifi];
CkoJsonObject *oPoint = [[CkoJsonObject alloc] init];
[aWifi AddObjectAt2: [NSNumber numberWithInt: 0] json: oPoint];
[oPoint AppendString: @"macAddress" value: @"01:23:45:67:89:AB"];
[oPoint AppendInt: @"signalStrength" value: [NSNumber numberWithInt: 8]];
[oPoint AppendInt: @"age" value: [NSNumber numberWithInt: 0]];
[oPoint AppendInt: @"signalToNoiseRatio" value: [NSNumber numberWithInt: -65]];
[oPoint AppendInt: @"channel" value: [NSNumber numberWithInt: 8]];
[aWifi AddObjectAt2: [NSNumber numberWithInt: 1] json: oPoint];
[oPoint AppendString: @"macAddress" value: @"01:23:45:67:89:AC"];
[oPoint AppendInt: @"signalStrength" value: [NSNumber numberWithInt: 4]];
[oPoint AppendInt: @"age" value: [NSNumber numberWithInt: 0]];
NSString *responseJson = [rest FullRequestString: @"POST" uriPath: @"/geolocation/v1/geolocate" bodyText: [json Emit]];
if (rest.LastMethodSuccess == NO) {
NSLog(@"%@",rest.LastErrorText);
return;
}
// When successful, the response code is 200.
if ([rest.ResponseStatusCode intValue] != 200) {
// Examine the request/response to see what happened.
NSLog(@"%@%d",@"response status code = ",[rest.ResponseStatusCode intValue]);
NSLog(@"%@%@",@"response status text = ",rest.ResponseStatusText);
NSLog(@"%@%@",@"response header: ",rest.ResponseHeader);
NSLog(@"%@%@",@"response JSON: ",responseJson);
NSLog(@"%@",@"---");
NSLog(@"%@%@",@"LastRequestStartLine: ",rest.LastRequestStartLine);
NSLog(@"%@%@",@"LastRequestHeader: ",rest.LastRequestHeader);
return;
}
json.EmitCompact = NO;
NSLog(@"%@%@",@"JSON request body: ",[json Emit]);
// The JSON response should look like this:
// {
// "location": {
// "lat": 37.4248297,
// "lng": -122.07346549999998
// },
// "accuracy": 1145.0
// }
NSLog(@"%@%@",@"JSON response: ",responseJson);
CkoJsonObject *jsonResp = [[CkoJsonObject alloc] init];
[jsonResp Load: responseJson];
CkoJsonObject *jsonLoc = [[CkoJsonObject alloc] init];
[jsonResp ObjectOf2: @"location" jsonObj: jsonLoc];
// Any JSON value can be obtained as a string..
NSString *latitude = [jsonLoc StringOf: @"lat"];
NSLog(@"%@%@",@"latitude = ",latitude);
NSString *longitude = [jsonLoc StringOf: @"lng"];
NSLog(@"%@%@",@"longitude = ",longitude);
NSString *accuracy = [jsonResp StringOf: @"accuracy"];
NSLog(@"%@%@",@"accuracy = ",accuracy);