0

我正在尝试通过他们的 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.comhttps://www.example.com它会创建 webhook。它似乎抱怨的任何其他事情。

4

1 回答 1

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 标头。

于 2014-12-22T00:40:49.613 回答