PHP curl获取api响应
Posted
技术标签:
【中文标题】PHP curl获取api响应【英文标题】:PHP curl get api response 【发布时间】:2015-05-21 12:33:48 【问题描述】:我正在尝试从 API 获取一个 json 对象,它正在返回一个字符串。我试图对其进行 json_decode ,但一切都搞砸了。我无法发布数据,因为它很敏感,但这里有一个类似的示例。
"status":"ok", "list_i_want":[param1:"blah",param2:"blah",param3:"blah",...]
我试图只剪掉第一部分和最后一个 ,但它仍然不会解码为 json 对象。它也可能是我的 curl_setopt() 的。
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept: application/json'
));
$resp = curl_exec($curl);
curl_close($curl);
DD($resp); // laravel's die and dump
【问题讨论】:
我认为您的 API 调用返回的值是一个 javascript 对象,而不是 JSON 字符串。如果是这种情况,您需要使用 JSON.stringiry() 等方法将其转换为 JSON 字符串 是的,它是一个 javascript 对象...有人告诉我它应该是一个 JSON 对象。无论如何它都会发送到客户端,所以我只是让 javascript 处理它,它工作得很好哈哈.解决了!!!! 【参考方案1】:对于 CURL 获取带有自定义标头的 API。
$subscription_key ='';
$host = '';
$request_headers = array(
"X-Mashape-Key:" . $subscription_key,
"X-Mashape-Host:" . $host
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
$season_data = curl_exec($ch);
if (curl_errno($ch))
print "Error: " . curl_error($ch);
exit();
// Show me the result
curl_close($ch);
$json= json_decode($season_data, true);
dd($json);
【讨论】:
以上是关于PHP curl获取api响应的主要内容,如果未能解决你的问题,请参考以下文章
从 PHP Curl 获取 POST Zapier webhook 响应