0

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=USA&token=&f=pjson

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.

1

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

Just to elaborate:

The Header should be Content-Type (any other specifics needed)

the Body should be x-www-form-urlencoded with the keys:

Ex.

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"}}]}   

sourceCountry                 USA

token                         

f                             pjson

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.