Bitbucket webhook不发送有效载荷

时间:2015-10-24 07:41:38

标签: php git bitbucket webhooks

我是webhooks的新手,每当我推送到我的仓库时,都会尝试自动部署到我的网站。

我将bitbucket repo上的webhook设置为一个包含简单php脚本的URL:

if(isset($_POST['payload'])) {
    logMsg("Got stuff\n");
} else {
    logMsg("No stuff\n");
}

在我推送到我的仓库之后,webhook将请求脚本正常但没有发送有效负载。我的日志文件总是说"没有东西"。

我错过了什么?

2 个答案:

答案 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数据是空的,那就意味着没有有效载荷。