首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POSTing cURL到Zapier Webhook

POSTing cURL到Zapier Webhook
EN

Stack Overflow用户
提问于 2013-08-28 08:40:49
回答 4查看 9.7K关注 0票数 3

我正在尝试将cURL发布到Zapier网络钩子上。

Zapier被配置为,如果我键入它们的URL,就像so -- https://zapier.com/hooks/catch/n/abcd?email=foo@bar.com&guid=foobar

它会收到这个帖子,但是当我尝试用cURL做同样的事情时,它似乎没有收到它。

以下是我在cURL中发布的代码-->

代码语言:javascript
复制
<?php
    // Initialize curl
    $curl = curl_init();

    // Configure curl options
    $opts = array(
        CURLOPT_URL             => 'https://zapier.com/hooks/catch/n/abcd',
        CURLOPT_RETURNTRANSFER  => true,
        CURLOPT_CUSTOMREQUEST   => 'POST',
        CURLOPT_POST            => 1,
        CURLOPT_POSTFIELDS      => 'guid='+ $_POST["guid"] + '&video_title=' + $_POST["video_title"] + '&email=' + $_POST["email"], 
    );

    // Set curl options
    curl_setopt_array($curl, $opts);

    // Get the results
    $result = curl_exec($curl);

    // Close resource
    curl_close($curl);

    echo $result;
?>

当我运行它时,它显示成功,但Zapier没有收到它。

在Zapier的文档中,有人给出了一个适当的cURL帖子的例子,比如so ->

代码语言:javascript
复制
curl -v -H "Accept: application/json" \
        -H "Content-type: application/json" \
        -X POST \
        -d '{"first_name":"Bryan","last_name":"Helmig","age":27}' \
        https://zapier.com/hooks/catch/n/Lx2RH/

我猜我在PHP文件中遗漏了一些东西,帮助非常感激!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-28 08:48:04

您需要对要发送的数据进行json编码,并设置内容类型:

更改:

代码语言:javascript
复制
$opts = array(
    CURLOPT_URL             => 'https://zapier.com/hooks/catch/n/abcd',
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_CUSTOMREQUEST   => 'POST',
    CURLOPT_POST            => 1,
    CURLOPT_POSTFIELDS      => 'guid='+ $_POST["guid"] + '&video_title=' + $_POST["video_title"] + '&email=' + $_POST["email"], 
);

至:

代码语言:javascript
复制
$data = array('guid' => $_POST["guid"], 'video_title' => $_POST["video_title"], 'email' => $_POST["email"]);
$jsonEncodedData = json_encode($data);
$opts = array(
    CURLOPT_URL             => 'https://zapier.com/hooks/catch/n/abcd',
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_CUSTOMREQUEST   => 'POST',
    CURLOPT_POST            => 1,
    CURLOPT_POSTFIELDS      => $jsonEncodedData,
    CURLOPT_HTTPHEADER  => array('Content-Type: application/json','Content-Length: ' . strlen($jsonEncodedData))                                                                       
);

这应该能行。

票数 7
EN

Stack Overflow用户

发布于 2013-08-28 08:44:24

如果您没有正确地发送POSTFIELDS,您需要使用.而不是+,而且您还应该对字符串进行url编码.

代码语言:javascript
复制
$opts = array(
    CURLOPT_URL             => 'https://zapier.com/hooks/catch/n/abcd',
    CURLOPT_HEADER          => false,
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_POST            => true,
    CURLOPT_POSTFIELDS      => http_build_query(array('guid' => $_POST['guid'], 'video_title' => $_POST['video_title'], 'email' => $_POST['email']))
);
票数 1
EN

Stack Overflow用户

发布于 2019-10-30 14:59:16

你没有收到它在Zapier,因为你没有设置‘子键’结构。看看下面的图片中你需要做些什么。

请记住,在我的情况下,我想抓住'company_name'.您必须用自己的参数替换它。您还可以定义其他参数,甚至可以完全更改“子键”结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18483158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档