How to Properly Format geocodeAddresses POST

1806
1
Jump to solution
07-29-2016 07:57 AM
AlecKoumjian
New Contributor

I am able to successfully process a batch geocoding request (described here geocodeAddresses—ArcGIS REST API: World Geocoding Service | ArcGIS for Developers ) using a GET request. However, I know I will want to use the POST method as the documentation describes since my batches may be large.

When I try to submit the data via POST, I get a very unhelpful error message.

{'error': {'code': 400,
  'details': [],
  'message': 'Unable to complete operation.'}}

The request I am trying to make looks like this (I have tried various iterations):

URL:
http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/geocodeAddresses?sourceCountry=US...

POST Data (raw)

{
    "addresses": {
        "records": [
            {
                "attributes": {
                    "OBJECTID": 1,
                    "Address": "380 New York St.",
                    "City": "Redlands",
                    "Region": "CA",
                    "Postal": "92373"
                }
            },
            {
                "attributes": {
                    "OBJECTID": 2,
                    "Address": "1 World Way",
                    "City": "Los Angeles",
                    "Region": "CA",
                    "Postal": "90045"
                }
            }
        ]
    }
}

Where of course <TOKEN> is replaced with a valid token I have successfully tested via a GET request.

Variations I have tried included having "records" as the top level key and including the GET parameters such as the token as keys in the POST payload.

Tags (1)
0 Kudos
1 Solution

Accepted Solutions
AlecKoumjian
New Contributor

It turns out that ESRI wants the data to be sent as x-www-form-urlencoded, as opposed to just a JSON object. So to correctly use the endpoint, send it as formdata with the key being "addresses" and the value being the JSON records object.

View solution in original post

0 Kudos
1 Reply
AlecKoumjian
New Contributor

It turns out that ESRI wants the data to be sent as x-www-form-urlencoded, as opposed to just a JSON object. So to correctly use the endpoint, send it as formdata with the key being "addresses" and the value being the JSON records object.

0 Kudos