2012-01-11 70 views
0

我有一个关于Luracast Restler v2的问题。Luracast Restler Multiformat XML not returned

我创建了我的index.php,内容如下:

require_once 'framework/restler.php'; 

spl_autoload_register('spl_autoload'); 

$r = new Restler(); 
$r->setSupportedFormats('JsonFormat', 'XmlFormat'); 
$r->addAPIClass('PROCESSOR'); 
$r->handle(); 

现在我有了下面的代码示例processor.php - 这仅仅是一个代码库的一小部分! :

class PROCESSOR { 
    private $api_ver = '0.1'; 
    private $allowed = array('xxx.xxx.xxx.xxx'); 

    public function index($request_data) { 
     if(empty($request_data)) throw new RestException(400,"parameter missing"); 
     $this->checkHost(); 
     $this->get_vars = $request_data; 

    $result = new stdClass();    
    $result->version = $this->api_ver; 
     $result->timestamp = date(DATE_RFC822); 
     $result->generated = $totaltime.' sec.'; 
     $result->type  = 'success'; 
     $result->filesize = $this->res_filesize; 
     $result->url  = $this->res_saved; 

     return $result;  
    } 
} 

我的问题是现在,当我请求发送到 http://api.myserver.xx/processor/?url=http://www.test.fr

的API做的事情必须做,并返回JSON字符串。

但是当我键入 http://api.myserver.xx/processor的.xml /?url=http://www.test.fr 它也返回JSON - 而不是XML?!?

这里有什么问题?

谢谢。

回答

0

不像JsonFormatXmlFormat不包含在restler.php它存在于xmlformat.php确保已将其复制到同一文件夹中restler.php,如果仍不能工作的尝试包括类也可手动

0

我发现这同时处理同一问题。我找到了代码问题,至少在2012年2月13日检索到GitHub代码。在类函数getResponseFormat()中,从503行开始,扩展是从请求url中提取的。

While循环(512)中的第一行提取了".xml"扩展即可,但是当条件语句评估$extension时,它不再是期望值。我只是在while循环的第一行后面添加一个变量来保存扩展的原始值,然后检查$format_map中是否存在该值。示例项目在执行此操作后按预期工作。

仅供参考,我不认为这是与平台相关的问题,但如果是这样,这是我的环境:

OS: Mac OSX 10.7.3 
PHP: v5.3.6 
Apache: 2.2.21 

希望这有助于。

0

除了Rhoderunner:我认为更精确的错误是在restler.php文件的514行。这条线必须是:

$extension = array_shift($extension); 

$extension = array_shift($extensions); 

因此,我们必须摆脱小号的。

+0

感谢报告,只是修复它在Restler 2.1.3 – Luracast 2012-02-22 03:58:27

+0

不客气。我真的很喜欢Restler,我们正在使用它在即将发布的CMS称为Spike:[spikecms.com](http://www.spikecms。com) – Lutsen 2012-02-23 08:34:59

+0

渴望了解更多关于SpikeCMS的信息,它可以成为Restler – Luracast 2012-02-23 12:46:59