无法确定我从Challonge API

时间:2016-02-26 16:50:07

标签: php curl simplexml

我正在尝试使用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';

在包装器类中进行这个简单的更改可以解决问题

1 个答案:

答案 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';

在包装器类中进行这个简单的更改可以解决问题