描述
我正在尝试通过 PHP cURL 向 API 发出请求
$access_token = $tokens['access_token'];
$headers = array(
"Authorization: Bearer " . $access_token
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,env('USER_INFO'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_USERAGENT,'php');
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
$info = curl_getinfo($ch);
$userInfo = curl_exec($ch);
$userInfo = json_decode($userInfo, true);
dd($userInfo);
我一直在找回这个
{"sub":"acr:123;type=STAT","updated_at":1509463516,"name":"User","email":"user@email.com"}
1
尝试 #2
如果我这样做
$userInfo = json_encode($userInfo, true);
我得到了
{"sub":"acr:123;type=STAT","updated_at":1509463516,"name":"User","email":"user@email.com"}
“真”
如何去掉下面的1
或true
,只获取JSON数据?
我需要为 json_decode()
传入另一个参数吗?
最佳答案
设置 CURLOPT_RETURNTRANSFER
curl 选项。 curl_exec
只是返回 true
而不是它,(它回应响应并返回 true;see curl_exec return values)和json_decode(true)
为真。
How would one go about and debug this further?
要试验的几件事:
删除
<$userInfo = json_decode($userInfo, true);
和dd($用户信息);
。如果没有设置CURLOPT_RETURNTRANSFER
选项,您应该仍然看到未解码的 JSON,但看不到true
或1
。在
json_decode
之前添加另一个dd($userInfo);
。您将看到curl_exec
实际返回的内容,这可能有助于您消除json_decode
作为这种奇怪行为的可能原因。
关于php - 如何强制仅从 API 响应中提取 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47141560/