2016-08-15 87 views
0

我試圖使用BlockCypher API接受以太坊。從他們的文檔(https://dev.blockcypher.com/eth/#address-endpoint),他們要求發送一個cURL請求來獲取地址。PHP cURL發佈API

我已經試過這樣: -

<?php 
$a = "https://api.blockcypher.com/v1/eth/main/addrs?token=my_token"; 
$b = file_get_contents($a); 
var_dump($b); 
?> 

這給了我這個錯誤: -

Warning: file_get_contents(https://api.blockcypher.com/v1/eth/main/addrs?token=my_token): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\wamp\www\x\backend\dev\t.php on line 3 

如果我嘗試直接在網頁上運行的URL,我得到這個錯誤: -

Endpoint not found. Please check your URL for typos and make sure you're using the correct HTTP method (GET, POST, etc). 

我在做什麼錯?

+0

使用了錯誤的網址是什麼?我假設你已經審查了你的實際標記,並且沒有真正將'my_token'發送給服務? –

+0

@MarcB 正確,我剛剛審查過它。實際上,我在那裏使用了我的原始令牌。 – RobertPuerco

回答

0

cURL請求通過cURL library完成。他們很可能阻止其他客戶端的請求(不通過用戶代理字符串)標識爲cURL。您正在使用file_get_contents,它比較容易,但帶有「PHP」User-Agent字符串。

查看cURL examples from the PHP documentation瞭解更多信息。

編輯:現在看來你讀了錯誤的API文檔。對於GET方法沒有端點/addrs,鏈接到的文檔「返回的地址的交易信息比地址平衡端點更多,但會犧牲一些響應速度」。要生成地址,您必須發佈到該API的generate-adress endpoint

+0

沒有爲我工作。獲取與在瀏覽器中運行URL相同的錯誤。 – RobertPuerco

+0

然後,這很可能是您的API密鑰,IP地址範圍或其他內容的安全問題。你是否按照他們的例子嘗試了curl命令行工具? – YetiCGN

+0

做了一些更進一步的測試,它工作。謝謝:) – RobertPuerco

0

試試這個代碼將工作:

<?php 

$curl = curl_init(); 


curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.blockcypher.com/v1/eth/main/addrs/738d145faabb1e00cf5a017588a9c0f998318012", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
    CURLOPT_SSL_VERIFYHOST =>0, 
    CURLOPT_SSL_VERIFYPEER =>0, 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
}