I have been using the esri.request to make get calls for a while and it's worked great:
request = Request({url: url, handleAs: 'json'});
Now I have a requirement to be able to post JSON data and get a similar response. From the API reference I thought it would be as simple as:
request = Request({url: url, handleAs: 'json', callbackParamName: 'callback', content: params}, {usePost: 'true'});
But I was getting a 415 error from the REST endpoint I was hitting.
I looked at the developer tools, Network section, and I saw that under Params, the payload was of type Form data. I think it needs to be JSON format. I looked under Headers and Content-Type is "application/x-www-form-urlencoded".
So I found the setRequestPreCallback function and started using that to set the headers["Content-Type"] = "application/json". That seemed to work because I can see Content-Type is now "application/json". However, my 415 error changed to a 400 error. If I look under Params it is not type JSON like I expect. It just says Request payload and the data looks like a string with = and & instead of a JSON format.
Is there something else you have to do to make the data post as JSON?