Есть необходимость отправить следующий хук:
POST /hooks/fa63636975788d7/execute HTTP/1.1
Host: some.host
Content-Type: application/json
{
"name": "Тестовая задача",
"desc": "Данная задача создана через Hook и может быть удалена"
}
Накидал скрипт следующим образом :
<?php
$data='{"name": "Тестовая задача","desc": "Данная задача создана через Hook и может быть удалена"}';
$json=json_encode($data);
$ch = curl_init('https://some.host/hooks/fa63636975788d7cd80/execute');
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_PROTOCOLS,CURLPROTO_HTTPS);
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
?>
Доступа к логам сервера some.host нет, скрипт отрабатывает но на сервере заявка не падает, сам впервые использую cURL, подскажите рабочий ли этот вариант ?
На первый взгляд ваш код рабочий, однако при запросе могут возникнуть ошибки которые надо выловить, попробуйте в вашем коде удалить curl_exec и curl_close и добавить данный кусок завершения CURL :
$Result = curl_exec($ch);
$CURL_Error = curl_errno($ch);
if ($CURL_Error > 0)
{
echo 'cURL Error: --'.$CURL_Error.'--<br>';
$RetStr = false;
}
else
{
$RetStr = $Result;
}
curl_close($ch);
Первый момент - Вы делаете json_encode уже строки json (см. пример), и возможно сервер такой json не понимает.
Второй момент - Вы шлете и $data (curl_setopt($ch,CURLOPT_POSTFIELDS,$data);) и $json (curl_setopt($ch,CURLOPT_POSTFIELDS,$json);)
Попробуйте такой вариант
$json='{"name": "Test Case","desc": "This is test task"}';
$ch = curl_init('https://some.host/hooks/fa63636975788d7cd80/execute');
curl_setopt($ch, CURLOPT_POST, true); //переключаем запрос в POST
curl_setopt($ch, CURLOPT_POSTFIELDS,$json); //Это POST данные
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //Отключим проверку сертификата https
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //из той же оперы
curl_exec($ch);
curl_close($ch);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости