为什么我的API的JSON响应没有在PHP中显示?

时间:2017-03-10 23:20:34

标签: php html arrays json api

我需要显示从API调用收到的JSON响应。但由于某些问题,它没有显示响应。服务器/ IP设置,API状态是API提供商的一切正常。所以现在,我无法弄清楚这个问题。

我按照以下方式处理PHP部分:

PHP

$url="https://api.domain.com/getdata.php?format=json&token=2455445444&type=ROWS";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


    $output = curl_exec($ch);
    curl_close($ch);    
    $json = json_decode($output, true);

    $resCode = $json['resCode'];
    $resText = $json['resText'];

    $rows = $json['data']['ROWS'];


    if (count($rows) > 0) {

                        echo "<table border='1' width='50%' align='center'><thead><tr>
                        <th>Amount</th>
                        <th>Detail</th>
                        <th>Validity (days)</th>
                        <th>Talktime</th>
                        </tr></thead><tbody>";
                        foreach($rows as $key => $value)
                        {
                            echo " <tr><td>" .$value["column1"] . "</td> <td>" .$value["column2"] . "</td> <td>" .$value["column3"] . "</td> <td>" .$value["column4"] . "</td> </tr>";
                        }
                        echo "</tbody></table><br/>";
                }
                echo "Not available <br/> Try again!";

来自API的JSON响应

{
    "data":{

        "ROWS": [
                    {
                        "column1":"123",
                        "column2":"456",
                        "column3":"789",
                        "column4":"054"
                    },
                    {
                        "column1":"775",
                        "column2":"545",
                        "column3":"647",
                        "column4":"745"
                    },
                    {
                        "column1":"440",
                        "column2":"544",
                        "column3":"745",
                        "column4":"999"
                    }
                ]
        },

    "resCode":"200",
    "resText":"SUCCESS"

}

获取输出:

Not available  
Try again!

期待HTML中的输出

<table border="1" width="50%" align="center">
<thread>
<tr>
  <th>Column 1</th>
  <th>Column 2</th>
  <th>Column 3</th>
  <th>Column 4</th>
</tr>
</thread>
<tbody>
<tr>
  <td>123</td>
  <td>456</td>
  <td>789</td>
  <td>054</td>
</tr>
<tr>
  <td>775</td>
  <td>545</td>
  <td>647</td>
  <td>745</td>
</tr>
<tr>
  <td>440</td>
  <td>544</td>
  <td>745</td>
  <td>999</td>
</tr>
</tbody>
</table> 

任何帮助将不胜感激!感谢。

1 个答案:

答案 0 :(得分:0)

我使用curl_error($ch)来了解curl是否有任何错误。它让我知道,由于API URL的SSL验证问题,我正面临这个问题。

因此,我从API网址中的s中删除了https。它有效!

我知道这是一个安全妥协!但引用网址是使用http,所以我也需要从api url中删除SSL验证。