看来此问题与
Content-Type和
Accept标头之间的差异有关。在HTTP中,
Content-Type用于请求和响应有效负载中以传达当前有效负载的媒体类型。
Accept在请求有效负载中使用来表示服务器可以在响应有效负载中使用的媒体类型。
因此,
Content-Type在没有正文的请求中(例如您的GET请求)没有任何意义。当您执行POST请求时,您正在发送消息正文,因此这很
Content-Type重要。
如果服务器无法处理
Content-Type请求的请求,它将返回415
HTTP错误。(如果服务器不能满足请求
Accept标头中的任何媒体类型,它将返回406错误。)
在OData v3中,媒体类型“ application / json”被解释为表示新的JSON格式(“ JSON
light”)。如果服务器不支持读取JSON light,则服务器在看到传入的请求是JSON
light时将抛出415错误。在有效负载中,您的请求正文是冗长的JSON,而不是JSON
light,因此服务器应该能够处理您的请求。但这并不是因为它看到了JSON light内容类型。
您可以通过以下两种方法之一来解决此问题:
- 在POST请求中将Content-Type设置为“ application / json; odata = verbose”,或者
- 在请求中包括DataServiceVersion标头,并将其设置为小于v3。例如:
DataServiceVersion: 2.0;
(选项2假定您在请求有效负载中未使用任何v3功能。)



