2017-08-20 104 views
-1

已提出此問題。但其中的任何一個都不適合我。當CURL調用始終進行時,我變爲NULL。PHP 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);然後我收到以下錯誤

enter image description here

它一直在顯示NULL。什麼可能導致錯誤。

+0

'$ clientResult'的輸出是false還是null? – hassan

+0

你在你的'list_clients中完成了'$ clients'的'var_dump()'嗎?php'確保它不是實際爲空? –

+1

啓用錯誤報告。 – Cyclonecode

回答

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); 
1

您錯過了關於$ch的警告。這是未申報的,但你引用它在第17行:(作爲一個方面說明,我會使用=== FALSE,其轉換爲FALSE所以有效的返回值不誤觸發代碼)

if($clientResult == FALSE) { 
    var_dump(curl_error($ch)); 
} 

你也在錯誤被處理(失敗)後繼續執行。您看到的NULL可能是因爲curl請求失敗。

糾正錯字在你的代碼並停止(或做適當),如果拋出一個錯誤:

if($clientResult == FALSE) { 
    var_dump(curl_error($curl)); 
    exit(); 
} 

更新響應OP更新

其他原因NULL可能會返回是因爲響應無效jsonCheck the PHP documentation

以適當的PHP類型返回在json中編碼的值。值 true,false和null分別作爲TRUE,FALSE和NULL返回 。如果json無法解碼或編碼數據比遞歸限制更深,則返回NULL。

您現在正在調試的HTML輸出顯示(在您的問題更新中)不會被解析爲JSON

+0

嗨@wally它不是因爲那。在撤消時我錯誤地發佈了它。請檢查編輯的問題。 –

+0

已更新答案。 – wally

+0

@ChannaveerHakari這將是你試圖解碼的非JSON對象。 – wally