简体   繁体   中英

PHP cURL Post API

I'm trying to use BlockCypher API for accepting Ethereum. From their documentation ( https://dev.blockcypher.com/eth/#address-endpoint ), they ask to send a cURL request to get an address back.

I've tried this :-

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

Which gives me this error :-

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

If I try to run the URL directly on web, I get this error :-

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

What wrong am I doing?

A cURL request is done via the cURL library . They are quite probably blocking requests from other clients that do not identify (via User-Agent string) as cURL. You are using file_get_contents, which is easier but carries a "PHP" User-Agent string.

See cURL examples from the PHP documentation for further information.

EDIT: Now it seems to me you read the API documentation wrong. There is no endpoint /addrs for the GET method, the documentation you linked to "returns more information about an address' transactions than the Address Balance Endpoint, but sacrifices some response speed in the process." To generate an adress you must POST to the generate-adress endpoint of that API.

Try This code it will work:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM