Bitbucket webhook没有发送有效载荷



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

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

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

在我推送到我的repo后,webhook将请求脚本,但没有发送有效负载。我的日志文件总是显示"No stuff"。

我错过了什么?

新的Bitbucket webhooks在请求正文中发送有效负载,而不是像以前的"Services"那样在请求头中发送。因此,要访问有效负载,您必须像这样读取请求正文:

$payload = file_get_contents('php://input');

或者像这样:

$payload = stream_get_contents(STDIN);

BitBucket webhook最近更改(2015年6月)。

新的事件有效载荷文档引用了一个教程页面,其示例不测试有效载荷。
参见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数据是空的,…这意味着没有有效载荷

最新更新