无法确定为什么我从 Challonge 收到 404 API
Unable to determine why I recieve a 404 from Challonge API
我正在 Ubuntu 服务器上工作,试图将 PHP 包装器用于 Challonge API。我只能返回 404 错误代码。我一直在调试包装器以查看哪里出了问题。以下是我的一些观察。
我的主要 PHP 看起来像这样
include('challonge.class.php');
$c = new ChallongeAPI(API_Key); //I have tried this with just my key, as well as in '' and ""
$t = $c->getTournaments();
echo $c->status_code; //This should echo out 200 if it all works correctly
上面的代码没有产生任何结果,所以我深入研究了 challonge.class.php(包装器),看看我是否能找到问题所在。我发现 status_code 在 switch 语句打印错误之前会是 404,但我从未看到任何错误。这是我确定问题所在的代码段
$curl_result = curl_exec($curl_handle);
$info = curl_getinfo($curl_handle);
$this->status_code = (int) $info['http_code']; //status_code is 404 here
$return = false;
if ($curl_result === false) {
// CURL Failed
$this->errors[] = curl_error($curl_handle);
} else {
switch ($this->status_code) {
case 401: // Bad API Key
case 422: // Validation errors
case 404: // Not found/Not in scope of account
//Everything is good here
$return = $this->result = new SimpleXMLElement($curl_result);
//Everything went wrong; cannot echo anything
foreach($return->error as $error) {
$this->errors[] = $error;
}
$return = false;
break;
...
对我来说,这意味着 new SimpleXMLElement($curl_result);
导致了问题。但是我不知道如何找出原因。据我所知,无论我为什么收到 404,SimpleXML 都安装得很好。我不知道这里发生了什么或我犯了什么错误。
更新:
这个问题我自己解决了。创建 SimpleXMLElement 会引发错误的原因是因为 Challonge 给我一个 404 错误页面而不是 xml 响应。这是因为挑战 API 的 PHP 包装器已过时。
插件使用这种URL格式发送请求
$call_url = "https://challonge.com/api/v1/".$path.'.xml';
API 将 HTTP 请求的正确 URL 格式描述为
$call_url = "https://api.challonge.com/v1/".$path.'.xml';
在包装器中进行这个简单的更改 class 解决了问题
这个问题我自己解决了。创建 SimpleXMLElement 会引发错误的原因是因为 Challonge 给我一个 404 错误页面而不是 xml 响应。这是因为挑战 API 的 PHP 包装器已过时。
插件使用这种URL格式发送请求
$call_url = "https://challonge.com/api/v1/".$path.'.xml';
API 描述了发出 HTTP 请求的正确 URL 格式
$call_url = "https://api.challonge.com/v1/".$path.'.xml';
在包装器中进行这个简单的更改 class 解决了问题
我正在 Ubuntu 服务器上工作,试图将 PHP 包装器用于 Challonge API。我只能返回 404 错误代码。我一直在调试包装器以查看哪里出了问题。以下是我的一些观察。
我的主要 PHP 看起来像这样
include('challonge.class.php');
$c = new ChallongeAPI(API_Key); //I have tried this with just my key, as well as in '' and ""
$t = $c->getTournaments();
echo $c->status_code; //This should echo out 200 if it all works correctly
上面的代码没有产生任何结果,所以我深入研究了 challonge.class.php(包装器),看看我是否能找到问题所在。我发现 status_code 在 switch 语句打印错误之前会是 404,但我从未看到任何错误。这是我确定问题所在的代码段
$curl_result = curl_exec($curl_handle);
$info = curl_getinfo($curl_handle);
$this->status_code = (int) $info['http_code']; //status_code is 404 here
$return = false;
if ($curl_result === false) {
// CURL Failed
$this->errors[] = curl_error($curl_handle);
} else {
switch ($this->status_code) {
case 401: // Bad API Key
case 422: // Validation errors
case 404: // Not found/Not in scope of account
//Everything is good here
$return = $this->result = new SimpleXMLElement($curl_result);
//Everything went wrong; cannot echo anything
foreach($return->error as $error) {
$this->errors[] = $error;
}
$return = false;
break;
...
对我来说,这意味着 new SimpleXMLElement($curl_result);
导致了问题。但是我不知道如何找出原因。据我所知,无论我为什么收到 404,SimpleXML 都安装得很好。我不知道这里发生了什么或我犯了什么错误。
更新:
这个问题我自己解决了。创建 SimpleXMLElement 会引发错误的原因是因为 Challonge 给我一个 404 错误页面而不是 xml 响应。这是因为挑战 API 的 PHP 包装器已过时。
插件使用这种URL格式发送请求
$call_url = "https://challonge.com/api/v1/".$path.'.xml';
API 将 HTTP 请求的正确 URL 格式描述为
$call_url = "https://api.challonge.com/v1/".$path.'.xml';
在包装器中进行这个简单的更改 class 解决了问题
这个问题我自己解决了。创建 SimpleXMLElement 会引发错误的原因是因为 Challonge 给我一个 404 错误页面而不是 xml 响应。这是因为挑战 API 的 PHP 包装器已过时。
插件使用这种URL格式发送请求
$call_url = "https://challonge.com/api/v1/".$path.'.xml';
API 描述了发出 HTTP 请求的正确 URL 格式
$call_url = "https://api.challonge.com/v1/".$path.'.xml';
在包装器中进行这个简单的更改 class 解决了问题