【问题标题】:PHP curl get api responsePHP curl获取api响应
【发布时间】: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 处理它,它工作得很好哈哈.解决了!!!!

标签: php json laravel curl


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    • 2018-07-23
    • 2016-10-27
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多