Actualmente estoy usando cartero para realizar una solicitud de API que envía datos del cuerpo. Puedo hacer que esto funcione usando "x-www-form-urlencoded" o "raw". Ver ejemplos a continuación:
Estoy tratando de convertir esto en una solicitud de javascript ajax pero no estoy seguro de cómo formatear el cuerpo/texto de datos. Aquí está mi guión:
$.ajax({ type: 'POST', url: 'https://login.microsoftonline.com/***/oauth2/token', headers: { "Content-Type": "application/json" }, data: { " grant_type=client_credentials &client_id=*** &client_secret=*** &resource=https://analysis.windows.net/powerbi/api " }, success: (data) => { console.log(data.token) }, error: (data) => { console.log('rr', data) } });Cualquier ayuda sería apreciada
Hay una discrepancia aquí, ya que está configurando el encabezado Content-Type en JSON, pero está enviando el formulario con código de URL. Necesitas usar uno u otro constantemente.
Si desea usar JSON explícitamente, haga esto:
$.ajax({ type: 'POST', url: 'https://login.microsoftonline.com/***/oauth2/token', contentType: 'application/json', // shorter than setting the headers directly, but does the same thing data: JSON.stringify({ grant_type: 'client_credentials', client_id: '***', client_secret: '***' resource: 'https://analysis.windows.net/powerbi/api' }), success: data => { console.log(data.token) }, error: (xhr, textStatus, error) => { console.log('rr', error) } });Si desea utilizar una cadena con código de URL de formulario, haga lo siguiente:
$.ajax({ type: 'POST', url: 'https://login.microsoftonline.com/***/oauth2/token', data: 'grant_type=client_credentials&client_id=***&client_secret=***&resource=https://analysis.windows.net/powerbi/api', success: data => { console.log(data.token) }, error: (xhr, textStatus, error) => { console.log('rr', error) } }); Tenga en cuenta en los ejemplos anteriores que el primer argumento para el controlador de error no es la solicitud o los datos de respuesta como parece esperar su ejemplo. He modificado esa parte para aceptar los argumentos correctos.