2012-01-11 3 views
0

У меня есть вопрос относительно Luracast Restler v2.Luracast Restler Multiformat XML не возвращается

Я создал свой 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

В отличие от JsonFormat, XmlFormat не содержится в restler.php он присутствует в xmlformat.php убедитесь, что вы скопировали его в ту же папку, restler.php и если он еще не работает попробовать в том числе этого класса также вручную

0

Я нашел это после рассмотрения той же проблемы. Я обнаружил проблему с кодом, по крайней мере, с кодом GitHub, полученным 13 февраля 2012 года. В функции restler.php класса getResponseFormat(), начиная с строки 503, расширения вытягиваются из URL-адреса запроса.

Первая строка в цикле while (512) извлекает расширение ".xml" только штрафом, но следующие строки обрабатывают переменную, поэтому, когда условный оператор оценивает $extension, он больше не является ожидаемым значением. Я просто добавил переменную после первой строки в цикле while, чтобы сохранить исходное значение расширения, а затем проверить, существует ли это значение в $format_map. Примерный проект работает, как и ожидалось, после этого.

FYI, я не думаю, что это платформа зависит проблема, но если это так, вот мое окружение:

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

Надеется, что это помогает.

0

В дополнение к Rhoderunner: я думаю, что более точная ошибка находится в строке 514 файла restler.php. Эта линия должна быть:

$extension = array_shift($extension); 

и НЕ:

$extension = array_shift($extensions); 

Таким образом, мы должны избавиться от s.

+0

Благодарим за сообщение, просто установили его в Restler 2.1.3 – Luracast

+0

Добро пожаловать. Я действительно как Restler, и мы используем его в нашей новой версии, чтобы скоро выпустили CMS под названием Spike: [spikecms.com] (http: //www.spikecms.com) – Lutsen

+0

Желая узнать больше о SpikeCMS, это может быть отличным примером для Restler – Luracast

Смежные вопросы