创建订阅时Walmart API通知返回415错误问题排查
严格校验请求体的JSON格式
哪怕头信息设置正确,JSON语法错误(比如引号不匹配、漏写逗号、用单引号代替双引号)都会让服务端无法解析内容,触发415错误。可以用jq命令本地校验:echo '你的请求体内容' | jq .,或者直接用在线JSON校验工具确认格式合法性。确认Content-Type头的准确性
检查头信息有没有拼写错误,必须是小写的application/json,避免写成Application/Json这类不规范格式。另外有些服务不接受带额外参数的Content-Type,比如application/json;charset=utf-8,可以尝试去掉字符编码参数再请求。排查请求体的内容问题
确保请求体不是空字符串,也没有混入XML、表单数据等非JSON内容。比如用curl调用时,-d参数后的内容必须是标准JSON字符串,不要有多余的换行或空格导致解析失败。检查HTTP客户端的自动行为
部分客户端库(比如Python的requests、Java的OkHttp)可能会自动修改Content-Type头,比如用data参数传JSON字符串时,可能被识别为表单数据。建议直接用客户端的json参数传递数据,它会自动设置正确的Content-Type并序列化数据,避免手动设置头信息后出现冲突。核对Walmart接口的特殊要求
查看Walmart开发者文档中该接口的具体规定,比如是否有强制要求的字段、字段类型是否正确(比如数字不能用字符串包裹),或者是否需要额外的头参数(如API密钥、签名),这些缺失或错误也可能间接引发415错误。用纯curl命令测试排除客户端问题
用最简curl命令测试,排除客户端库的干扰:curl -X POST \ https://marketplace.walmartapis.com/v3/webhooks/subscriptions \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -H 'WM_SEC.ACCESS_TOKEN: 你的访问令牌' \ -d '{ "eventType": "ITEM_PRICE_CHANGE", "callbackUrl": "https://your-domain.com/webhook-endpoint", "headers": {} }'如果curl调用成功,说明问题出在你的客户端代码实现;如果仍报错,继续排查请求体和接口权限。
内容的提问来源于stack exchange,提问作者ThDat1301

