我正在尝试通过Content Management API在Contentful.com上创建Webhook。命令如下(注意我已经调整了相应的ID以确保安全性):
curl -X PUT -H 'Content-Type: application/vnd.contentful.management.v1+json' -H 'Authorization: Bearer c8c3ef46d5dbfe3c841a3b4bff1ee89449669ffd407d1a62c7a0ecbad9c3120' -H 'Content-Length: 33' 'https://api.contentful.com/spaces/du8mcuj2d5la/webhook_definitions/1CtkR6S5oUqWywgEO2i0xx' -d '{"url":"https://xxx.parseapp.com"}'
无论我在最终对象中使用哪个URL(https://www.example.com
除外),我都会得到以下响应:
{
"sys":{
"type":"Error",
"id":"InvalidJsonRequestBody"
},
"requestId":"85f-1338857905",
"message":"The body you sent is not valid JSON."
}
我已经通过Paw(http://luckymarmot.com/paw
)验证了端点传递接受入站POST请求和(返回200响应代码)。我要强调,如果我将https://xxx.parseapp.com
切换为https://www.example.com
,则会创建webhook。还有什么东西似乎在抱怨。
答案 0 :(得分:4)
似乎问题很简单:
有效负载长度与Content-Length
标头不匹配。
{"url":"https://xxx.parseapp.com"}
为34个字节,但您已将标头明确设置为-H 'Content-Length: 33'
。 (33仅适用于 example.com 示例。)
如果您将长度调整为-H 'Content-Length: 34'
,它应该可以正常工作。
此外,您可以在尝试使用curl
时将此标题保留,因为它会自动将其设置为正确的值(使用-v
选项进行检查)。
通常,大多数HTTP客户端/库在执行POST / PUT请求时应自行设置Content-Length标头。