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

Google Maps Geolocation Request

See more REST Examples

Demonstrates how make a Google Maps Geolocation REST API request.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.JsonArray;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Rest;

public class ChilkatExample {

    public static void main(String[] args) {
        // 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 rest = new Rest();

        // Connect to the Google API REST server.
        boolean bTls = true;
        int port = 443;
        boolean bAutoReconnect = true;
        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
        //   }
        //  ]
        // }

        JsonObject json = new JsonObject();
        json.appendInt("homeMobileCountryCode", 310);
        json.appendInt("homeMobileNetworkCode", 260);
        json.appendString("radioType", "gsm");
        json.appendString("carrier", "T-Mobile");

        JsonArray aCellTowers = new JsonArray();
        json.appendArray2("cellTowers", aCellTowers);

        JsonObject oCellTower = new JsonObject();
        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);

        JsonArray aWifi = new JsonArray();
        json.appendArray2("wifiAccessPoints", aWifi);

        JsonObject oPoint = new JsonObject();
        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);

        String responseJson;
        try {
            responseJson = rest.fullRequestString("POST", "/geolocation/v1/geolocate", json.emit());
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // When successful, the response code is 200.
        if (rest.getResponseStatusCode() != 200) {
            // Examine the request/response to see what happened.
            System.out.println("response status code = " + rest.getResponseStatusCode());
            System.out.println("response status text = " + rest.getResponseStatusText());
            System.out.println("response header: " + rest.getResponseHeader());
            System.out.println("response JSON: " + responseJson);
            System.out.println("---");
            System.out.println("LastRequestStartLine: " + rest.getLastRequestStartLine());
            System.out.println("LastRequestHeader: " + rest.getLastRequestHeader());
            return;
        }

        json.setEmitCompact(false);
        System.out.println("JSON request body: " + json.emit());

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

        System.out.println("JSON response: " + responseJson);

        JsonObject jsonResp = new JsonObject();
        jsonResp.load(responseJson);

        JsonObject jsonLoc = new JsonObject();
        jsonResp.objectOf2("location", jsonLoc);

        // Any JSON value can be obtained as a string..
        String latitude = jsonLoc.stringOf("lat");
        System.out.println("latitude = " + latitude);
        String longitude = jsonLoc.stringOf("lng");
        System.out.println("longitude = " + longitude);

        String accuracy = jsonResp.stringOf("accuracy");
        System.out.println("accuracy = " + accuracy);
    }
}