viernes, 14 de diciembre de 2012

The HTTP header ACCEPT is missing or its value is invalid making rest call using JavaScript

Es bastante común que al intentar hacer una llamada utilizando la API REST para SharePoint 2013 utilizando JavaScript, como la siguiente:

function onGetCustomers(){
 var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('Clientes')/items/?$select=Title,Nombre,Apellidos";
 
 //$.getjson() falla
 jqCall = $.getJSON(requestUri,null, onGetCustomersSuccess);
 jqCall.error(onError);
}

Nos encontremos con un error como este:


25d
{"error":{"code":"-1, Microsoft.SharePoint.Client.ClientServiceException","message":{"lang":"en-US","value":"The HTTP header ACCEPT is missing or its value is invalid."},"innererror":{"message":"The HTTP header ACCEPT is missing or its value is invalid.","type":"Microsoft.SharePoint.Client.ClientServiceException","stacktrace":"   at Microsoft.SharePoint.Client.Rest.RestRequestProcessor.Process()\r\n   at Microsoft.SharePoint.Client.Rest.RestRequestProcessor.ProcessRequest()\r\n   at Microsoft.SharePoint.Client.Rest.RestService.ProcessQuery(Stream inputStream, IList`1 pendingDisposableContainer)"}}}
0


Y esto se debe sencillamente a que si inspeccionamos a detalle los headers enviados en la petición  encontraremos que hace falta algo adicional:

Headers enviados como parte del request:


Al hacer este tipo de llamadas debemos indicar, junto con el header Accept=application/json, el header: odata=verbose, es decir quedaría de esta forma:   Accept=application/json; odata=verbose. Esto debido a que por el momento solo se soporta el formato verbose de JSON, el formato "light" no es soportado.

Luego entonces cambiamos la llamada para incluir este header, por el siguiente código:

function onGetCustomers(){
 var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('Clientes')/items/?$select=Title,Nombre,Apellidos";

 var requestHeaders={
 "ACCEPT":"application/json;odata=verbose",
 }

 $.ajax({
 url: requestUri,
 type:"GET",
 contentType:"application/json",
 headers: requestHeaders,
 success:onGetCustomersSuccess,
 error:onError
 });
}

Después de realizar esto, la respuesta sera satisfactoria

Algunas referencias:
Important developer changes from Office and SharePoint 2013 Preview to Office and SharePoint 2013
OData Verbose JSON Format

Happy Coding!

0 comentarios:

Etiquetas

SharePoint 2010 (38) Microsoft (32) Desarrollo SharePoint (31) Gerardo Reyes Ortiz (27) SharePoint (20) SharePoint 2013 (18) Errores SharePoint (12) México (10) PowerShell (9) Silverlight (8) Visio Services (7) Features (6) MVP (6) Silverlight 3 (6) WebCast (6) Workflows (6) Configuracion SharePoint 2010 (5) D.F. (5) API REST (4) Configuracion SharePoint 2010; (4) Troubleshooting (4) Visual Studio 2010 (4) Visual studio (4) WSS (4) Web parts (4) Apps (3) Comunidad SharePoint (3) Configuración SharePoint 2013 (3) ODATA (3) SharePoint Server (3) SharePoint; Instalación SharePoint; Troubleshooting; Search Service (3) Silverlight 3.0 (3) Silverlight Toolkit (3) WebParts (3) javascript (3) jquery (3) Eventos SharePoint (2) Office 2010 (2) PeoplePicker (2) REST (2) SQL Server (2) Scripting (2) Search Service Application (2) SharePoint Designer (2) UPA (2) UPS (2) Workflows SharePoint (2) host header (2) Apps Development (1) Big Bang (1) CAS (1) CSOM (1) Codeplex (1) CompartiMOSS (1) Configuracion SharePoint 2010; Errores SharePoint (1) Configuracion SharePoint 2010; SharePoint 2010 (1) Custom Actions (1) Custom Editor Parts (1) Delegate Controls (1) Deployment (1) DisableLoopbackCheck (1) Document Library (1) Entrevista (1) Examenes de Certificación (1) Extract WSP (1) FBA (1) FS4SP (1) Fakes (1) Fast Search Server 2010 For SharePoint (1) Fiddler (1) HTTP.SYS (1) HTTPS (1) JSON (1) Language Pack's (1) Latam (1) MAXDOP (1) MCSM (1) MSExpertos (1) MVC (1) Microsoft México (1) Microsoft; Codeplex; Screencast; (1) My Sites (1) SQL Server 2012 (1) SQL Server Reporting Services (1) Screencast (1) Screencast; (1) Service Applications (1) Service Pack (1) SharePoint 2007 (1) SharePoint 2010 SP 1 (1) SharePoint API (1) SharePoint Conference (1) SharePoint Emulators (1) SharePoint Farm (1) SharePoint Health Analyzer (1) SharePoint Magazine (1) SharePoint Online (1) SharePoint Search (1) SharePoint Test (1) SharePoint; Desarrollo SharePoint (1) Shims (1) Simposio (1) Simposio Latinoamericano (1) SkyDrive Pro (1) Soporte Microsoft (1) Templates (1) Tip (1) VSeWSS (1) Virtual Machine (1) Visual Studio 2012 (1) WCF (1) WSS; IIS 7 (1) Web API (1) Web Content Management (1) Web Services (1) Windows 8 (1) Windows Live ID (1) Xml (1) appcmd (1) iOS (1) jqGrid (1) onload function (1)