2013-03-04 49 views
0

我想從here檢索JSON數據檢索NULL JSON:我從especific網站

{ 

    "input_address": "1BeE32K9FxvrnBNeuKwdyM26vZ4GsggqZG", 
    "callback_url": "http://example.com", 
    "fee_percent": 1.5, 
    "destination": "12Za1i1zhYTCeHWBg8yJb72BeEGQVEuMdT" 

} 

...如果你把你的瀏覽器,你會看到,JSON數據格式正確無誤。那裏沒問題。

然而,當我嘗試使用標準的腳本來檢索與PHP的數據:

<?php 
$url = 'https://blockchain.info/api/receive?method=create&format=plain&anonymous=true&address=12Za1i1zhYTCeHWBg8yJb72BeEGQVEuMdT&callback=http%3A%2F%2Fexample.com'; 
$JSON = file_get_contents($url); 
$data = json_decode($JSON); 
var_dump($data); 
echo 'url: '.$url; 
?> 

...我沒有得到任何數據; var_dump寫入「NULL」(您可以在http://bitstamina.com/theamazinghat/thehat.php上測試前面的代碼)。然而,如果我嘗試任何其他返回JSON數據的URL,我的代碼就可以完美工作。

我在做什麼錯?它必須是我的一個非常愚蠢的錯誤,或者該網站blockchain.info阻止我的網站發出請求。

+0

輸出'json_last_error()' – silly 2013-03-04 12:25:58

+0

我剛剛測試了你的代碼,它的工作正常。請再試一次。我已經測試過使用cli。 – 2013-03-04 12:27:53

+0

您應該首先''var_dump()''$ JSON'變量。無論如何,你的代碼就像我一樣工作。 – 2013-03-04 12:27:54

回答

1

我相信這是由於跨域不匹配。使用http將您的頁面更改爲https或呼叫。 http://blockchain.info/api/receive?method=create&format=plain&anonymous=true&address=12Za1i1zhYTCeHWBg8yJb72BeEGQVEuMdT&callback=http%3A%2F%2Fexample.com

This works。

+0

如何在服務器端PHP中出現跨域問題? – 2013-03-04 12:34:47

+0

非常感謝,你是對的! – 2013-03-04 12:37:00

+0

我懷疑@GoriFater沒有啓用「https」,並切換到「http」解決了這個問題,但沒有解決任何跨域問題。 – 2013-03-04 12:48:33

1

您是否已在您的php配置中啓用allow_url_fopen

如果沒有,你會得到一個警告 - 你有錯誤/警告顯示?

檢查錯誤在腳本頂部添加下面的行。

error_reporting(E_ALL); 
ini_set('display_errors', true); 

然後你可能會看到爲什麼file_get_contents()不起作用。

+0

有沒有錯誤,但感謝您的幫助! – 2013-03-04 12:40:02