Я разрабатываю бэкэнд-систему для мобильного приложения, используя PHP. Мобильное приложение разработано с использованием Expo. То, что я пытаюсь сделать, это отправить уведомление pu sh на устройство через сервер expo.
Я создал вспомогательную функцию для выполнения запроса POST к конечной точке уведомления expo pu sh, описанной здесь .
/**
* Perform POST request with curl.
*
* @param string $url
* @param mixed $params
* @param array $headers
*
* @return array
*/
function curl_post($url, $params = null, $headers = [])
{
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTPHEADER => $headers,
]);
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if (!empty($error)) {
throw new \Error($error);
}
return json_decode($response, true);
}
Сначала он работал как чудо, но иногда позже он не работает, потому что сервер Expo не распознает отправленные мной параметры.
Странно то, что когда я использовал guzzle для выполнения запроса (с тем же вводом), он всегда работал. Я пропускаю некоторые настройки при использовании curl? Или это известная ошибка curl?
Я использую Windows 10 & XAMPP с PHP 7.3.11 для разработки, также я использую Laravel 6 framework.