400 Ошибка использования file_get_contents в публичной конечной точке - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь получить доступ к этой конечной точке API Coinbase:

https://api.pro.coinbase.com/currencies

Обратите внимание, что конечная точка общедоступна / не аутентифицирована, и документация API подтверждаетчто

$coinbase_coins = file_get_contents('https://api.pro.coinbase.com/currencies');
$coinbase_coins = json_decode($coinbase_coins, true);

Приведенный выше код выдает ошибку 400.Я дергаю себя за волосы, пытаясь понять это.Я могу получить доступ к конечной точке просто отлично в браузере.Я могу получить доступ к другим общедоступным конечным точкам в других API, так что я не думаю, что это проблема на сервере.

Я также пробовал cURL без удачи.

Может кто-нибудь показать рабочий пример вPHP случайно?Спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Это похоже на проблему со стороны сервера;это блокировка запросов без браузера UA.Вы можете установить один, и, кажется, работает нормально.

$ctx = stream_context_create(["http"=>["user_agent"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:63.0) Gecko/20100101 Firefox/63.0"]]);
$coinbase_coins = file_get_contents('https://api.pro.coinbase.com/currencies', true, $ctx);
$coinbase_coins = json_decode($coinbase_coins, true);

print_r($coinbase_coins);
...