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 响应

使用 php curl 对 paypal api 没有响应

来自 Spotify 的 PHP cURL json 响应

如何从php中的paypal curl响应获取付款参考号

如何从 CURL 响应 PHP API 的 JSON 字符串中删除引号、不需要的数据

MailChimp API 在 V3.0 PHP Curl 中响应 404