php - 如何获得 API 响应

标签 php api curl

我有这样的回应:

{
    "Contratos": [
        {
            "IdCUPS": 0,
            "CodigoCUPS": "",
            "IdContrato": 0,
            "CodigoContrato": null,
            "IdCliente": 0,
            "IdDocumento": null,
            "IdEmpresa": null,
            "Incidencias": [
                {
                    "Propiedad": "CodigoCUPS",
                    "Code": 0,
                    "CodeAlfa": "",
                    "Mensaje": "El cups ya esta asignado a contratos activos",
                    "IsAdvertencia": false,
                    "IsError": true,
                    "IsExcepcion": false,
                    "ExceptionTimestamp": "0001-01-01T00:00:00",
                    "ExceptionMessage": "",
                    "ExceptionStackTrace": "",
                    "InnerException": "",
                    "ImageSource": ""
                }
            ]
        }
    ]
}

如何访问“Mensaje”选项? 我有这段代码,我在其中制作 curl_init 及其选项:

$ch = curl_init($url.$contratoPotencial);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);

我试过这段代码:

echo "<br><br> Mensaje: ";
echo "<br>".$response->Contratos->Incidencias->Mensaje;

但是不行!

最佳答案

您在 json 中混合了数组和对象:尝试以下解决方案:

$response = '{
    "Contratos": [
        {
            "IdCUPS": 0,
            "CodigoCUPS": "",
            "IdContrato": 0,
            "CodigoContrato": null,
            "IdCliente": 0,
            "IdDocumento": null,
            "IdEmpresa": null,
            "Incidencias": [
                {
                    "Propiedad": "CodigoCUPS",
                    "Code": 0,
                    "CodeAlfa": "",
                    "Mensaje": "El cups ya esta asignado a contratos activos",
                    "IsAdvertencia": false,
                    "IsError": true,
                    "IsExcepcion": false,
                    "ExceptionTimestamp": "0001-01-01T00:00:00",
                    "ExceptionMessage": "",
                    "ExceptionStackTrace": "",
                    "InnerException": "",
                    "ImageSource": ""
                }
            ]
        }
    ]
}';

$responseData = json_decode($response);
echo "<br><br> Mensaje: ";
echo "<br>".$responseData->Contratos[0]->Incidencias[0]->Mensaje;

输出

Mensaje: 
El cups ya esta asignado a contratos activos

将完整的json编码成数组如下:

$responseData = json_decode($response, true);
echo "<br><br> Mensaje: ";
echo "<br>".$responseData['Contratos'][0]['Incidencias'][0]['Mensaje'];

在这两种情况下你都会得到想要的输出

关于php - 如何获得 API 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45669587/

相关文章:

php - 搜索查询在 Laravel 中不起作用

python - 使用 Tweepy 库搜索推文

php - 使用 ethercalc API 导入 excel/csv 文件

php - cURL 和 PHP 显示 "1"

php - 使用 PHP cURL 向 Node.js 发送 Post 请求

php - 将数据发送到数据库并通过 AJAX 返回

php - 使用 verot class.upload.php 在上传时调整图像大小

java - 您可以访问用户尝试连接的 IP 地址吗?

json - Golang API 响应的 Catchall 类型

php - php 中带有列名的冒号