Estoy haciendo una solicitud de obtención de API REST a un servidor. El servidor alberga trabajos de automatización que busco iniciar con parámetros.
var jobURL = "https://hostname/api/v1/tasks"; $.ajax({ url: jobURL, method: 'GET', async: false, contentType: "application/json", data: { name: '*JOBNAME*' }, headers: { 'Authorization': 'Bearer '+ obj.access_token, 'Content-type': 'application/x-www-form-urlencoded', Accept:'application/json' }, success: function(data){ taskname_obj = data // result }Estoy haciendo esto según la documentación del producto del servidor y está funcionando.
Tengo una solicitud exitosa, con elementos devueltos en la variable 'taskname_obj'. Dicho esto, estoy tratando de usar el mismo tipo de código para otra llamada.
// THIS IS WORKING TO JOB WITHOUT PARAMS. // Let's run the job. $.ajax({ url: jobURL, method: 'POST', async: false, headers: { 'Authorization': 'Bearer '+ obj.access_token }, success: function(data){ taskname_obj2 = data // result } })SO que estoy haciendo el código anterior
De nuevo tengo éxito, puedo comenzar mi trabajo. Tengo una indicación de éxito devuelta en taskname_obj2 .
Con todo lo dicho, estoy tratando de comenzar esto con parámetros. Supongo que tengo que poner eso en el elemento "datos:", y grito usar JSON. Entonces... hago lo siguiente...
var payload = { USER_ID: "", BEGDATE: "060121", ENDDATE: "121521" }; $.ajax({ url: jobURL, method: 'POST', async: false, contentType: 'application/json', data: payload, headers: { 'Authorization': 'Bearer '+ obj.access_token, 'Content-type': 'application/x-www-form-urlencoded', Accept:'application/json' }, success: function(data){ taskname_obj2 = data // result } })esto no funciona Recibo un error 415 del servidor para un tipo de medio no admitido. También intenté no usar JSON.stringify para el elemento de datos, pero también obtuve un 415 con eso.
Creo que no le estoy diciendo correctamente cómo leer mi JSON. ¿Alguien puede ayudarme a entender lo que estoy haciendo mal?
También intenté agregar este contentType: 'application/json', sin éxito.
ACTUALIZACIÓN: el uso de la técnica BARMAR me devuelve un error 422.
$.ajax({ url: jobURL, method: 'POST', async: false, contentType: 'application/json', dataType: 'json', data: JSON.stringify(payload), headers: { 'Authorization': 'Bearer '+ obj.access_token }, success: function(data){ taskname_obj2 = data // result } })Deshágase de los Content-type y de Accept . Utilice las opciones contentType: y dataType: para especificarlas.
Y dado que la API requiere una entrada JSON, debe ser contentType: "application/json"
$.ajax({ url: jobURL, method: 'POST', async: false, contentType: 'application/json', dataType: 'json', data: JSON.stringify(payload), headers: { 'Authorization': 'Bearer '+ obj.access_token }, success: function(data){ taskname_obj2 = data // result } })