【问题标题】:POSTing cURL to Zapier Webhook将 cURL 发布到 Zapier Webhook
【发布时间】:2013-08-31 05:55:14
【问题描述】:

我正在尝试使用 cURL 发布到 Zapier webhook。

Zapier 的配置是这样的,如果我像这样键入他们的 URL—— https://zapier.com/hooks/catch/n/abcd?email=foo@bar.com&guid=foobar

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

这是我使用 cURL 发布的代码 -->

<?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 帖子的示例,就像这样 -->

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 文件中遗漏了一些东西,非常感谢您的帮助!

【问题讨论】:

    标签: php curl webhooks zapier


    【解决方案1】:

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

    变化:

    $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"], 
    );
    

    到:

    $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))                                                                       
    );
    

    这应该可行。

    【讨论】:

    • 今天这仍然是一个有效的答案吗?我也遇到了这个问题。
    【解决方案2】:

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

    $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']))
    );
    

    【讨论】:

      【解决方案3】:

      您没有在 Zapier 中收到它,因为您没有设置“子密钥”结构。 看看下图中你需要做什么。

      请记住,就我而言,我想捕捉 'company_name'。您必须用自己的参数替换它。您还可以定义其他参数,甚至完全更改“子键”结构。

      【讨论】:

        【解决方案4】:

        为了提供一些功能,从以前的代码中获取并制作一个简单的可重用函数。

        function send_array_to_zapier_webhook($php_array, $hook_url){
          // Initialize curl
          $curl = curl_init();
        
          $json_encoded_data = json_encode($php_array);
          $opts = array(
            CURLOPT_URL => $hook_url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => $json_encoded_data,
            CURLOPT_HTTPHEADER => array('Content-Type: application/json','Content-Length: ' . strlen($json_encoded_data))
          );
        
          // Set curl options
          curl_setopt_array($curl, $opts);
        
          // Get the results
          $result = curl_exec($curl);
        
          // Close resource
          curl_close($curl);
        }
        

        【讨论】:

          猜你喜欢
          • 2019-03-04
          • 2023-03-06
          • 2019-07-17
          • 2018-11-20
          • 2018-07-23
          • 2019-11-04
          • 2021-06-27
          • 2018-10-11
          • 2019-10-11
          相关资源
          最近更新 更多