Php 文件\u获取\u内容-无法打开流:HTTP请求失败

Php 文件\u获取\u内容-无法打开流:HTTP请求失败,php,json,file-get-contents,Php,Json,File Get Contents,当我试图将url值传递到文件\u get\u内容时,出现以下错误: 文件\u获取\u内容$origin&destination=$destination&detairation\u date=$detairation\u date&return\u date=$return\u date&number\u结果=$number\u结果和apikey=$apikey: 无法打开流:HTTP请求失败!HTTP/1.1401 我读过各种可能的解决方案,但在我的情况下,它们似乎都不起作用 $origin

当我试图将url值传递到文件\u get\u内容时,出现以下错误:

文件\u获取\u内容$origin&destination=$destination&detairation\u date=$detairation\u date&return\u date=$return\u date&number\u结果=$number\u结果和apikey=$apikey: 无法打开流:HTTP请求失败!HTTP/1.1401

我读过各种可能的解决方案,但在我的情况下,它们似乎都不起作用

$origin = $_GET['origin'];
$destination = $_GET['destination'];
$departure_date = $_GET['departure_date'];
$return_date = $_GET['return_date'];
$number_of_results = $_GET['number_of_results'];
$apikey = "sdflsdksdksdsdskd";

ini_set("allow_url_fopen", 1);

$json_url = file_get_contents('https://api.sandbox.amadeus.com/v1.2/flights/low-fare-search?origin=$origin&destination=$destination&departure_date=$departure_date&return_date=$return_date&number_of_results=$number_of_results&apikey=$apikey');
$json_url的结果是一个简单有效的json 我们将非常感谢您的帮助

编辑:
问题不在于API密钥,当我硬编码它时,错误代码是不同的400错误请求,但仍然是文件获取内容-无法打开流:HTTP请求失败

如注释中所述,HTTP 401表示未经授权,因此您没有为请求提供正确的身份验证。此外,如果您在浏览器中打开url或阅读响应的消息体,您会看到它显示

访问此资源需要有效的API密钥。请确保您的请求包含一个名为 apikey,其值是您位于的帐户中的有效API密钥

这应该很清楚地解释这个问题:您没有发送api密钥

在我看来,您问题的根本原因如下:

文件\u获取\u内容“$origin&destination=$destination&deposition\u date=$deposition\u date&return\u date=$return\u date&number\u of_results=$number\u of_results&apikey=$apikey”


这里使用的是单引号,但是如果您想在字符串中使用诸如$DEVIATION\u date之类的变量,则需要在字符串中使用双引号。

问题是,您的url被逐字读取是由于“.”。 如果使用,则字符串中的变量将用作变量,但现在字符串是“…apikey=$api”,而不是“…apikey=SDFLSDKSDKD”

那就换线吧

$json_url = file_get_contents('https://api.sandbox.amadeus.com/v1.2/flights/low-fare-search?origin=$origin&destination=$destination&departure_date=$departure_date&return_date=$return_date&number_of_results=$number_of_results&apikey=$apikey');


401表示未经授权。因此,您可能没有正确地进行身份验证。当然,$apikey没有像其他值一样被接受。。。但即使我硬编码了密钥,结果也是一样的,除了API密钥错误是400个坏请求如果使用密钥,结果是400个坏请求,那么结果就不一样了,对吗?首先需要有人阅读。@lStoilov建议您应该对文件内容中的字符串使用双引号,而不是单引号。上面已经回答了。。。问题不在于授权。使用硬编码api正确的api,结果无法打开流:HTTP请求失败!HTTP/1.1 400错误请求Andreas,Andreas。。。你又发现了明显的问题。谢谢你,伙计!它就像一个符咒:不仅是我发现了它,而且我第一次读到了你的消息@eis,我也做到了
$json_url = file_get_contents("https://api.sandbox.amadeus.com/v1.2/flights/low-fare-search?origin=$origin&destination=$destination&departure_date=$departure_date&return_date=$return_date&number_of_results=$number_of_results&apikey=$apikey");