php - json_decode 未通过 curl 调用返回正确的 api 响应 php 数组

标签 php arrays curl json

我正在为我的一位客户开发运输 API。我有来自供应商的运输 api。在以 json 格式发出 curl 请求时,json 响应未转换为 php 数组?找到下面的代码:

$params['format'] = 'json';
$params['data'] =json_encode($package_data);
$token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$url = "http://test.shipping.co/push/json/?token=".$token;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($params));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
$results = json_decode($result, true);
print_r($results);

这里有 2 个 print_r 函数,输出如下:

{ "cash_pickups_count": 1.0, "cod_count": 0, "success": true, "package_count": 1, "upload_wbn": "UPL21969440", "replacement_count": 0, "cod_amount": 0.0, "prepaid_count": 0, "pickups_count": 0, "packages": [ { "status": "Success", "waybill": "0008110000125", "refnum": "8", "client": "demo", "remarks": "", "cod_amount": 21841.0, "payment": "Cash" } ], "cash_pickups": 21841.0 }1

1

我收到 2 个输出:1

我想访问此响应的 php 数组。我试过 json_decode() 但它没有正确响应。 在这里需要您的意见。提前致谢。

最佳答案

问题是您没有设置CURLOPT_RETURNTRANSFER 选项。在这种情况下,CURL 将响应直接输出到 STDOUT(浏览器)并且 curl_exec 返回 true。因为这个 json_decode 无法解码 $result 变量(因为它的值 = true)。

所以你必须设置CURLOPT_RETURNTRANSFER选项:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($params));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
$results = json_decode($result, true);
print_r($results);

关于php - json_decode 未通过 curl 调用返回正确的 api 响应 php 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236415/

相关文章:

php - Codeigniter restclient 不工作

php - 如何防止 whereRaw 自动对我的集合进行排序?

php - Yii2.0完整登录基本模板

php - 如何将 jSON 转换为 XML

c - 使用指针替换字符串中的字符

javascript - 无法创建以数组索引作为键和值的 JS 对象?

php - 通过 PHP 插入 Zoho CRM 潜在客户

javascript - BrainTree Sandbox 返回验证错误 : - Unknown paymentMethodNonce

javascript - 如何在 JavaScript 中从数组的每个数组中返回两个最大的数字而不使用 for 循环?

php - 带有代理的PHP CURL在套接字上导致CLOSE_WAIT