我试图通过他们的内容管理API在Contentful.com上创建一个Web钩子。命令如下(注意,我已经调整了各自的安全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,它就会创建web钩子。它似乎还在抱怨其他任何事情。
发布于 2014-12-22 00:40:49
问题似乎很简单:有效负载长度与Content-Length头不匹配。
{"url":"https://xxx.parseapp.com"}是34个字节,但是您已经显式地将头设置为-H 'Content-Length: 33'。(33只适用于example.com示例。)
如果将长度调整为-H 'Content-Length: 34',那么它应该工作得很好。此外,在尝试使用curl时,您可以不使用这个标头,因为它会自动将其设置为正确的值(使用-v选项检查)。
通常,大多数HTTP客户机/库在执行POST/PUT请求时都应该自己设置内容长度头。
https://stackoverflow.com/questions/27590457
复制相似问题