Php 400在公共终结点上使用文件\u获取\u内容时出错

Php 400在公共终结点上使用文件\u获取\u内容时出错,php,rest,endpoint,Php,Rest,Endpoint,我正在尝试访问Coinbase API的此端点: 请注意,端点是公共的/未经验证的,并且 $coinbase_coins = file_get_contents('https://api.pro.coinbase.com/currencies'); $coinbase_coins = json_decode($coinbase_coins, true); 上面的代码抛出一个400错误。我正在努力想办法解决这个问题。我可以在浏览器中访问端点。我可以在不同的API中访问其他公共端点,因此我认为这

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

请注意,端点是公共的/未经验证的,并且

$coinbase_coins = file_get_contents('https://api.pro.coinbase.com/currencies');
$coinbase_coins = json_decode($coinbase_coins, true);
上面的代码抛出一个400错误。我正在努力想办法解决这个问题。我可以在浏览器中访问端点。我可以在不同的API中访问其他公共端点,因此我认为这在服务器上不是问题

我也试过卷发,但运气不好


有人能偶然展示一个PHP的工作示例吗?谢谢

这似乎是服务器端问题;它在没有浏览器的情况下阻止请求。你可以设置一个,它似乎工作得很好

$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);

这似乎是一个服务器端问题;它在没有浏览器的情况下阻止请求。你可以设置一个,它似乎工作得很好

$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);

你是在windows机器上吗?是的,我是在windows机器上
file\u get\u contents()
的windows手册上说windows在处理SSL时可能有问题。它还说,当您使用http://前缀时,PHP能够检测到这个问题,您确实这样做了。也许这还存在一些问题。只是一个想法。@Joseph\u J注意的是连接到运行在Windows上的IIS服务器,与客户端无关。这也是一个非常古老的通知。我可以确认同样的400响应试图获取此文件。这是一个服务器端的东西。你在windows机器上吗?是的,我在windows机器上使用
file\u get\u contents()。它还说,当您使用http://前缀时,PHP能够检测到这个问题,您确实这样做了。也许这还存在一些问题。只是一个想法。@Joseph_J注意到这是为了连接到运行在Windows上的IIS服务器,与客户端无关。这也是一个非常古老的通知。我可以确认同样的400响应试图获取此文件。这是一个服务器端的东西。