400在公共端点上使用file_get_contents时出错

时间:2018-10-12 00:43:37

标签: php rest endpoint

我正在尝试访问Coinbase API的此端点:

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

请注意,端点是公共的/未经身份验证的,API documentation确认这一点

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

上面的代码抛出400错误。我正在拔头发试图解决这个问题。我可以在浏览器中正常访问端点。我可以使用不同的API访问其他公共端点,所以我认为这在服务器上没有问题。

我也尝试过cURL,但是没有运气。

有人能偶然在PHP中显示有效的示例吗?谢谢!

1 个答案:

答案 0 :(得分:4)

这似乎是服务器端问题;没有浏览器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);