这个问题已经被问到了。但任何这些都不适合我。当CURL调用一直进行时,我得到NULL。
以下是我的 list_clients.php 文件。
<?php
require_once 'init.php';
header('Content-Type: application/json');
$clientResults = mysqli_query($link, "SELECT * FROM clients");
$clients = array();
while($client = mysqli_fetch_assoc($clientResults)){
$clients[] = $client;
}
echo json_encode($clients);
exit;
所以上面的输出是:
[{"ip_address":"192.168.177.137","mac_address":"3a:1a:cf:7c:92:89","added_on":"2017-08-19 12:48:34"},{"ip_address":"192.168.177.137","mac_address":"3a:1a:cf:7c:92:89","added_on":"2017-08-20 08:09:29"}]
以下是我的 curl_call.php 文件
<?php
$url = 'http://127.0.0.1/testing/list_clients.php';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPGET, TRUE);
curl_setopt($curl, CURLOPT_HEADER, 0);
//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type : application/json',
'Accept: application/json'
));
$clientResult = curl_exec($curl);
if($clientResult == FALSE) {
var_dump(curl_error($curl));
}
curl_close($curl);
var_dump($clientResult); //For this line I am getting the following image eror
$clients = json_decode($clientResult, TRUE);
var_dump($clients);
如果我var_dump($clientResult);
,那么我收到以下错误
它一直显示 NULL 。可能导致错误的原因。
答案 0 :(得分:1)
您错过了关于$ch
的警告。这是未宣布的,但你在第17行引用它:
if($clientResult == FALSE) {
var_dump(curl_error($ch));
}
(作为旁注,我使用=== FALSE
,因此转换为FALSE
的有效返回值不会错误地触发该代码。)
在处理错误(未能处理)之后,您也将继续执行。您看到的NULL
可能是因为curl
请求失败。
更正代码中的拼写错误并在出现错误时停止(或适当地执行):
if($clientResult == FALSE) {
var_dump(curl_error($curl));
exit();
}
更新OP以更新:
可能返回NULL
的另一个原因是因为响应无效json
。 Check the PHP documentation:
以适当的PHP类型返回json中编码的值。值 true,false和null返回为TRUE,FALSE和NULL 分别。如果json无法解码或者如果是,则返回NULL 编码数据比递归限制更深。
您正在调试的HTML输出显示(在您的问题更新中)不会解析为JSON
。
答案 1 :(得分:0)
刚才想通了。如果我在 curl_call.php 中评论以下代码行,它将正常工作。
<?php
$url = 'http://127.0.0.1/testing/list_clients.php';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPGET, TRUE);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
/* curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type : application/json',
'Accept: application/json'
)); */
$clientResult = curl_exec($curl);
if($clientResult == FALSE) {
var_dump(curl_error($curl));
}
curl_close($curl);
var_dump($clientResult);
$clients = json_decode($clientResult);
var_dump($clients);