2014-04-05 101 views
0

我正在嘗試訪問API並獲取一些JSON。我似乎無法弄清楚我在這裏做錯了什麼。輸出爲null從URL中檢索使用PHP的JSON

這是我的PHP代碼:

<?php 

$query_string_full = 'https://api.cityofnewyork.us/calendar/v1/search.htm?app_id=39563317lalaland&app_key=somethingsomething&categories=City%20Government%20Office'; 

$json = file_get_contents($query_string_full); 
$obj = json_decode($json); 
echo '<pre>'. json_encode($obj, JSON_PRETTY_PRINT) .'</pre>'; 
?> 
+0

BTW:我想你不應該公開暴露你的API密鑰。 –

+0

我會以任何方式殺死密鑰。那不會真的活。是的,這就是我回到php來掩蓋它的原因。我可以做到這純粹是客戶端 – soum

回答

1

我做了這個小函數來從幾個不同的apis返回json。你需要使用捲曲。

function exposeJSON ($apiUrl) { 
    $json_url = $apiUrl; 

    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, $json_url); 

    // Built in authentication if needed. 
    //curl_setopt($ch, CURLOPT_USERPWD, "$USER:$PASS"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 

    // grab URL and pass it to the browser 
    $response = curl_exec($ch); 
    $return = json_decode($response[0], true); 

    // close cURL resource, and free up system resources 
    curl_close($ch); 

    return $return; 
} 

所以你可以做這樣的事情

$apiData = exposeJSON('urltoapi'); 
echo $apiData; // Should be the json. 
+1

完全合作......感謝您分享此內容。這真的很棒再次感謝 – soum

+0

@soum,沒有問題!你能接受答案嗎? :)或給我一些愛。大聲笑 – xCNPx

2

功能file_get_contentshttps工作。您應該改用cURL函數。

<?php 
$query_string_full = 'https://api.cityofnewyork.us/calendar/v1/search.htm?app_id=39563317&app_key=8396021a9bde2aad2eaf8ca9dbeca353&categories=City%20Government%20Office'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $query_string_full); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$json = curl_exec($ch); 
curl_close($ch); 

$obj = json_decode($json); 
echo '<pre>'. json_encode($obj, JSON_PRETTY_PRINT) .'</pre>'; 
?> 
+0

@ Sharanya--這個工作還不錯 – soum

+0

接受最早的工作答案是一般習慣,但如果你願意,你可以自由地選擇最遲的答案。 –