尝试获取非对象错误PHP curl的属性
我正在尝试使用api来获取水果信息尝试获取非对象错误PHP curl的属性,php,json,api,curl,Php,Json,Api,Curl,我正在尝试使用api来获取水果信息 $fruitStirng = 'apple'; $url = "https://www.fruityvice.com/api/fruit/".$fruitStirng; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($ch); $mai
$fruitStirng = 'apple';
$url = "https://www.fruityvice.com/api/fruit/".$fruitStirng;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
$main = json_decode($res);
结果应该是这样的:
{ "genus": "Malus", "name": "Apple", "id": 6, "family": "Rosaceae", "order": "Rosales", "nutritions": { "carbohydrates": 11.4, "protein": 0.3, "fat": 0.4, "calories": 52, "sugar": 10.3 } }
$genus = $main->genus;
echo $genus
但例如,当我尝试echogenus
时,如下所示:
{ "genus": "Malus", "name": "Apple", "id": 6, "family": "Rosaceae", "order": "Rosales", "nutritions": { "carbohydrates": 11.4, "protein": 0.3, "fat": 0.4, "calories": 52, "sugar": 10.3 } }
$genus = $main->genus;
echo $genus
尝试获取非对象的属性“genus”时出现错误
我也使用了foreach,但也出现了一个错误
Invalid argument supplied for foreach()
由于返回JSON的API使用HTTPS,因此必须配置cURL SSL选项(CURLOPT_SSL_VERIFYPEER)。下面是一个工作代码:
<?php
$fruitString = 'apple';
$url = "https://www.fruityvice.com/api/fruit/".$fruitString;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
$main = json_decode($res);
$genus = $main->genus;
echo $genus; // Malus
是否$res
不等于false
?尝试var\u转储($res)
如果它是false
,使用if(curl\u errno($ch)){$error\u msg=curl\u error($ch);}
来回显错误。可能的错误可能是SSL证书问题:无法获取本地颁发者certificatebool(false)
或其他相关内容。@IhorVyspiansky ops its false