PHP, получить JSON данные ответа через API сервиса

91
20 марта 2022, 21:00

Уже всю голову сломал... Есть API сервиса: https://turgenev.ashmanov.com/?a=apikey Нужно получить ответ.

Делаю так:

//Получаем данные из формы, данные приходят, все нормально
$api = $_GET["api"];
$key = $_GET["key"];
$text = $_GET["text"];
$more = $_GET["more"];
//Если в адресную строку браузера вставить то, что возвращает $url, то все нормально
$url = "https://turgenev.ashmanov.com/?api=$api&key=$key&text=$text&more=$more";
$opts = array(
'http'=>array(
'method'=>"POST",
'header'=>"Accept-language: en\r\n" .
          "Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
$data = file_get_contents($url, false, $context);
var_dump($data);

Но $data возвращает false. Что я делаю не так?

Answer 1

Если вам нужно получить то же, что и в браузере, то нет необходимости в контексте (обратите внимание, данные передаются в url по $_GET, а контекст - 'method' => "POST").

К тому же при обращении через file_get_contents() к URL его неплохо бы обернуть в urlencode(), чтобы правильно передавать пробелы и спецсимволы.

Попробуйте так:

$url = "https://turgenev.ashmanov.com/?api=$api&key=$key&text=$text&more=$more";
$url = urlencode($url);
$data = file_get_contents($url);
var_dump($data);

Должно решить вашу проблему.

Если нет - напишите что вернул var_dump() в комментарии к ответу.

READ ALSO
Корзина на WordPress без платежной системы

Корзина на WordPress без платежной системы

Собственно нужно сделать функционал добавления товара (записи) в корзину, без оформления заказаЕсть ли какие-то плагины для подобных задач?...

80
Перехватить нажатие клавиши назад на смартфоне

Перехватить нажатие клавиши назад на смартфоне

Подскажите как на javascript в браузере перехватить нажатие клавиши "Назад", на смартфоне?

157
Почему "заедает" скролл?

Почему "заедает" скролл?

Если полоса прокрутки дошла до конца или находится в начале (в любом направлении), она иногда там "застревает"

77