我正在尝试使用PHP包装器来进行ARCHA API的Ubuntu服务器。我只能得到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(包装器),看看能不能找到问题所在。我发现在switch语句打印错误之前status_code将是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);
导致了问题。但我不知道如何找出原因。据我所知,SimpleXML安装得很好,无论我为什么得到404.我对这里发生的事情或我正在犯的错误感到茫然。
我自己解决了这个问题。创建SimpleXMLElement会导致错误的原因是因为Challonge给了我一个404错误页面而不是xml响应。这是由于用于过时的ARCHA API的PHP包装器。
该插件使用此URL格式发送请求
$call_url = "https://challonge.com/api/v1/".$path.'.xml';
API描述了将HTTP请求作为
的正确URL格式$call_url = "https://api.challonge.com/v1/".$path.'.xml';
在包装器类中进行这个简单的更改可以解决问题
答案 0 :(得分:0)
我自己解决了这个问题。创建SimpleXMLElement会导致错误的原因是因为Challonge给了我一个404错误页面而不是xml响应。这是由于用于过时的ARCHA API的PHP包装器。
该插件使用此URL格式发送请求
$call_url = "https://challonge.com/api/v1/".$path.'.xml';
API描述了将HTTP请求作为
的正确URL格式$call_url = "https://api.challonge.com/v1/".$path.'.xml';
在包装器类中进行这个简单的更改可以解决问题