2016-08-15 3 views
0

Я пытаюсь использовать API BlockCypher для принятия Ethereum. Из их документации (https://dev.blockcypher.com/eth/#address-endpoint) они просят отправить запрос cURL, чтобы вернуть адрес.PHP cURL Post 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

используя неправильный URL? Я предполагаю, что вы подвергли цензуре ваш фактический токен и не отправили буквально «my_token» на услугу? –

+0

@MarcB Правильно, я только что цензурил его. Фактически, я использовал свой оригинальный токен. – RobertPuerco

ответ

0

Запрос cURL осуществляется через cURL library. Вероятно, они блокируют запросы от других клиентов, которые не идентифицируют (через строку User-Agent) как cURL. Вы используете file_get_contents, что проще, но содержит строку «User-Agent» PHP.

Для получения дополнительной информации см. cURL examples from the PHP documentation.

EDIT: Теперь, похоже, вы неправильно прочитали документацию по API. Для метода GET нет конечной точки /addrs, документация, которую вы связываете с транзакциями «возвращает больше информации об адресе», чем конечная точка «Баланс адреса», но жертвует некоторой скоростью ответа в этом процессе ». Чтобы создать адрес, вы должны отправить POST в generate-adress endpoint этого API.

+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; 
}