Azure Pipelines任务设置Content-Type请求头返回415错误如何解决?
问题修复方案
1. 修正空POST请求的载荷配置
你当前requestContent设置为空字符串"",即使接口不需要传参,POST请求传JSON格式的空载荷也需要明确写为{}。空字符串会和你声明的application/json格式冲突,服务端无法识别为空JSON payload,就会返回415错误。Postman会自动补全空JSON载荷的格式处理,所以不会触发报错,但Azure DevOps的请求客户端会严格按照配置发送请求,不会自动补全格式。
修改后的dataSources配置段:
"dataSources": [ { "name": "ProjectsEP", "endpointUrl": "{{endpoint.url}}/api/project/projects", "requestVerb": "POST", "resultSelector": "jsonpath:", "requestContent":"{}", "headers": [ { "name": "Content-Type", "value": "application/json" } ] } ]
2. 补充dataSourceBindings的header配置
Azure DevOps自定义任务的数据源绑定逻辑存在已知的配置继承问题,dataSources中定义的headers在部分版本中不会被自动带入实际请求,需要在dataSourceBindings中显式声明同样的Content-Type头:
"dataSourceBindings": [ { "target": "project", "endpointId": "$(FabrikamService)", "dataSourceName": "ProjectsEP", "requestVerb": "POST", "headers": [ { "name": "Content-Type", "value": "application/json" } ] } ]
3. 补充校验项
- 确认自定义任务manifest的
resource版本为2.0及以上,旧版本v1 manifest对POST类型的数据源支持存在缺陷 - 如果服务端支持charset声明,可将Content-Type值改为
application/json; charset=utf-8,进一步兼容服务端的媒体类型校验逻辑
内容的提问来源于stack exchange,提问作者Rohit
相关产品推荐
相关产品推荐

