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):
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.
Solved! Go to Solution.
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.
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.