如何解决本地SharePoint 2013 REST API无法返回JSON响应的问题?
我之前在同时对接SP2013本地版和在线版的时候,也踩过一模一样的坑!当时折腾了好半天,才搞清楚两者REST API在JSON响应支持上的差异。
问题根源
SharePoint 2013本地版的REST API基于OData v2规范,对JSON响应的要求比在线版严格得多。在线版(基于较新的OData版本)只需要设置Accept: application/json就能正常返回JSON,但本地版默认只会响应XML(ATOM格式)——如果只传application/json作为Accept头,服务器无法识别你的请求格式,自然会抛出错误。
解决方法
你只需要调整请求头或URL参数,明确告诉SP2013本地版你要的是verbose格式的JSON:
方法1:修改Accept请求头
把原来的Accept: application/json改成:Accept: application/json;odata=verbose方法2:添加URL参数
在请求URL末尾加上?odata=verbose参数,同时保留Accept: application/json头,示例请求:GET http://xxxxxxx:8300/_api/web/?odata=verbose
两种方法选其一即可,我个人习惯同时配置,确保万无一失。
额外提示
如果按上述方法仍无法解决,建议检查你的SP2013服务器是否安装了最新的累积更新补丁。早期SP2013版本的REST API在JSON支持上存在一些bug,安装最新补丁后大概率能解决问题。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

