我是webhooks的新手,每当我推送到我的仓库时,都会尝试自动部署到我的网站。
我将bitbucket repo上的webhook设置为一个包含简单php脚本的URL:
if(isset($_POST['payload'])) {
logMsg("Got stuff\n");
} else {
logMsg("No stuff\n");
}
在我推送到我的仓库之后,webhook将请求脚本正常但没有发送有效负载。我的日志文件总是说"没有东西"。
我错过了什么?
答案 0 :(得分:5)
新的Bitbucket webhooks在请求正文中发送有效负载,而不是像之前的“服务”那样在请求标头中发送。 因此,要访问有效负载,您必须阅读请求正文:
$payload = stream_get_contents(STDIN);
或者那样:
return $xml->children('SOAP-ENV', true)->Body->ExecuteQueryResponse->pOutput->recipient->attributes()->email
Etvoilà!
答案 1 :(得分:0)
BitBucket webhook changed recently (June 2015)。
新的event payload doc引用tutorial page,其示例不测试有效负载
请参阅atlassianlabs/webhook-listener
及其listener.py
(python,但php的想法是一样的)
@app.route('/webhook', methods=['GET', 'POST'])
def tracking():
if request.method == 'POST':
data = request.get_json()
它直接尝试解码json。如果那个json数据是空的,那就意味着没有有效载荷。