[英]POSTing cURL to Zapier Webhook
我正在嘗試使用 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 文件中遺漏了一些東西,非常感謝幫助!
您需要對要發送的數據進行 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))
);
這應該有效。
您沒有正確發送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']))
);
為了提供一些功能,從之前的代碼中提取並制作了一個簡單的可重復使用的 function。
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.