@n1ksON
мидл

Почему не работает curl?

Есть php код:
$url = 'https://нормальный урл';

$param = $_POST['param'];

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Content-Type: application/json",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$data = <<<DATA
{
"param": $param,
}
DATA;

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = json_encode(curl_exec($curl));
curl_close($curl);
var_dump($data, $resp);


Запускаю php -S localhost:8000
Из index.html при сабмите формы вызывается этот action. По итогу запрос вообще будто не отправляется, в $resp лежит "", притом что на каком-нибудь reqbin все норм и приходит нормальный ответ. Такое ощущение будто запрос вообще не отправляется.
Что я делаю с этим курлом не так?
  • Вопрос задан
  • 496 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вы формируете невалидный JSON. В нём лишняя запятая и, если в $param не число, то ещё и неправильно заданное значение.
Ну и добавьте заголовок Content-Length.
+$data = json_encode(
+    ['param' => $param],
+    JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES,
+);
$headers = array(
    'Content-Type: application/json',
+    'Content-Length: ' . strlen($data),
);

-$data = <<<DATA
-{
-"param": $param,
-}
-DATA;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
kawabanga
@kawabanga
$data = <<<DATA
{
"param": $param,
}
DATA;


Не вижу закрытия тега.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы