@newaitix

Почему такое возможно?

header('Content-Type: application/json');
function sign($api_secret,$url,$method){
	return base64_encode(hash_hmac("sha256",$url.$method,$api_secret,true));
}
$api_token='111';
$api_secret='111';
$url="https://api.site.com/";
$method="GET";
$signature=sign($api_secret,$url,$method);

$curl=curl_init();
curl_setopt_array($curl,[
	CURLOPT_USERPWD=>"$api_token:$signature",
	CURLOPT_URL=>$url
]);
$return=json_decode(curl_exec($curl),true);
curl_close($curl);
print_r(json_decode (json_decode (json_decode (json_decode (json_decode($return)))))[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]);

сколько бы раз я не делал json_decode и сколько бы [0] не поставил всегда будит одна и та же картина.
Ответ будит вида
[{from:1,...},{from:2,...}]
И способен ли php вообще разобрать такой ответ от сервера или звать на помощь божественный js, который одной строкой разбивает такое ?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Minifets
@Minifets
Hello world!!!
См. документацию curl_exec

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Однако, если установлена опция CURLOPT_RETURNTRANSFER, при успешном завершении будет возвращен результат, а при неудаче - FALSE.


$return=json_decode(curl_exec($curl),true);

Здесь вы пытаетесь распарсить не json, а bool тип данных. А json валится на поток вывода. Чтобы этого не было, укажите в curl флаг CURLOPT_RETURNTRANSFER = true.

curl_setopt_array($curl,[
  CURLOPT_USERPWD=>"$api_token:$signature",
  CURLOPT_URL=>$url,
  CURLOPT_RETURNTRANSFER => true,
]);


И будет вам счастье.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы