2016-08-15 88 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; 
}