簡體   English   中英

未返回Luracast Restler多格式XML

[英]Luracast Restler Multiformat XML not returned

我對Luracast Restler v2有疑問。

我用以下內容創建了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?!?

怎么了

謝謝。

JsonFormat不同, XmlFormat不包含在restler.php它存在於xmlformat.php確保已將其復制到與restler.php相同的文件夾中;如果仍無法正常工作,請嘗試手動包含該類。

我在處理同一問題時發現了這篇文章。 我已經找到了該代碼的問題,至少是在2012年2月13日檢索到的GitHub代碼。在restler.php類函數getResponseFormat() ,從503行開始,擴展是從請求url中提取的。

while循環(512)中的第一行可以很好地提取".xml"擴展名,但是以下幾行可以對變量進行操作,因此,當條件語句對$extension求值時,它不再是期望值。 我只是在while循環的第一行之后添加了一個變量來保存擴展的原始值,然后檢查該值是否存在於$format_map 完成后,示例項目將按預期工作。

僅供參考,我不認為這是平台相關的問題,但是如果是這樣,那么這是我的環境:

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

希望這可以幫助。

除了Rhoderunner:我認為更精確的錯誤在於restler.php文件的514行。 該行必須是:

$extension = array_shift($extension);

不是

$extension = array_shift($extensions);

因此,我們必須擺脫s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM