繁体   English   中英

Luracast Restler正在发送'text / html'而不是JSON

[英]Luracast Restler is sending 'text/html' instead of JSON

我有一个使用LuraCast Restler API实现的REST Web服务。 它一直运作良好,直到现在。 突然之间,我没有收到JSON数据以响应我对服务的请求。

对于每个服务请求,X-Debug始终返回以下通知。

( ! ) Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php on line 1136
Call Stack
#   Time    Memory  Function    Location
1   0.0013  631072  {main}( )   ../restIndex.php:0
2   0.0969  1170720 Restler->addAPIClass( ) ../restIndex.php:14
3   0.0971  1181912 Restler->generateMap( ) ../restler.php:248
4   0.0971  1184616 parse_doc( )    ../restler.php:652
5   0.0971  1184984 DocParser->parse( ) ../restler.php:1157
6   0.0972  1205520 DocParser->parseLines( )    ../restler.php:1073
7   0.0972  1209704 DocParser->parseLine( ) ../restler.php:1079
8   0.0973  1209944 DocParser->setParam( )  ../restler.php:1111
9   0.0973  1209944 DocParser->formatClass( )   ../restler.php:1120

( ! ) Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php on line 1136
Call Stack
#   Time    Memory  Function    Location
1   0.0013  631072  {main}( )   ../restIndex.php:0
2   0.1065  1224952 Restler->addAuthenticationClass( )  ../restIndex.php:15
3   0.1065  1225304 Restler->addAPIClass( ) ../restler.php:260
4   0.1068  1228176 Restler->generateMap( ) ../restler.php:248
5   0.1068  1229568 parse_doc( )    ../restler.php:652
6   0.1068  1229936 DocParser->parse( ) ../restler.php:1157
7   0.1068  1239456 DocParser->parseLines( )    ../restler.php:1073
8   0.1068  1241448 DocParser->parseLine( ) ../restler.php:1079
9   0.1069  1241696 DocParser->setParam( )  ../restler.php:1111
10  0.1069  1241696 DocParser->formatClass( )   ../restler.php:1120

( ! ) Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php:1136) in /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php on line 385
Call Stack
#   Time    Memory  Function    Location
1   0.0013  631072  {main}( )   ../restIndex.php:0
2   0.1102  1228048 Restler->handle( )  ../restIndex.php:16
3   0.1233  1461248 Restler->sendData( )    ../restler.php:366
4   0.2814  1547080 header ( )  ../restler.php:385

( ! ) Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php:1136) in /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php on line 386
Call Stack
#   Time    Memory  Function    Location
1   0.0013  631072  {main}( )   ../restIndex.php:0
2   0.1102  1228048 Restler->handle( )  ../restIndex.php:16
3   0.1233  1461248 Restler->sendData( )    ../restler.php:366
4   0.2835  1547048 header ( )  ../restler.php:386

( ! ) Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php:1136) in /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php on line 387
Call Stack
#   Time    Memory  Function    Location
1   0.0013  631072  {main}( )   ../restIndex.php:0
2   0.1102  1228048 Restler->handle( )  ../restIndex.php:16
3   0.1233  1461248 Restler->sendData( )    ../restler.php:366
4   0.2846  1547064 header ( )  ../restler.php:387

( ! ) Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php:1136) in /Applications/MAMP/htdocs/aem.davidcasillas.es/public/webservice/restler/restler.php on line 388
Call Stack
#   Time    Memory  Function    Location
1   0.0013  631072  {main}( )   ../restIndex.php:0
2   0.1102  1228048 Restler->handle( )  ../restIndex.php:16
3   0.1233  1461248 Restler->sendData( )    ../restler.php:366
4   0.2914  1547072 header ( )  ../restler.php:388

最后,数据以响应方式发送,但不是以JSON格式发送,因此我的movil应用程序无法再处理它。

正如我所说,该服务一直运作良好至今。 我不知道这些通知是否与错误有关,但它们似乎很明显。

你能指出我如何调试这个问题的方向吗?

如果这可以有任何帮助,这里是我的代码:

这是我配置Restler的索引脚本:

<?php

require_once '../../BaseDatos.php';
require_once 'restler/restler.php';

#set autoloader
#do not use spl_autoload_register with out parameter
#it will disable the autoloading of formats
spl_autoload_register('spl_autoload');


$r = new Restler();
$r->setSupportedFormats('JsonFormat');
$r->addAPIClass('Rest');
$r->addAuthenticationClass('Seguridad');
$r->handle();

这是公共API类(我只显示一个方法)

class Rest
{

    /**
     * @brief Una instancia de la clase BaseDatos
     *
     * @var BaseDatos $db
     */
    private $db;

    /**
     * \brief Constructor de la clase.
     *
     * Inicializa una instancia de la clase BaseDatos.
     *
     */
    function __construct() {
        $this->db = BaseDatos::getInstance();
    }
    public function getFuentes($nombreUsuario, $password) {

        $fuentes = $this->db->getFuentes();
        $fuentes = array('fuentes' => $fuentes);
        return $fuentes;
    }

这是检索要返回的信息的BaseDatos类方法:

public function getFuentes() {
    //SELECT * FROM fuentes
    $queryString = 'SELECT * FROM ' . TABLA_FUENTES . ' ORDER BY nombreFuente';
    $queryResult = $this->query($queryString);
    if ($this->errno != 0) {
        //ERRRO. mysql
        $this->setErrorNoAndMessage(ErrorCode::ERROR_MYSQL, $this->error);
        return FALSE;
    }
    $resultado = array();
    while ($row = $queryResult->fetch_assoc() ) {
        $resultado[] = $row;
    }

    $this->resetErrorNoAndMessage();
    return $resultado;

}

问题与我最近添加的文档评论有关。 我在类文档中添加的@class标记产生了冲突,可能是因为Restler的DocParser不处理此特定标记。

我在问题中包含的前两个注意事项发生在DocParser尝试执行formatClass()方法响应可能是@class标签而不是PHP中的Class声明时。

也许对此API有深刻理解的人可以添加一些亮点。

只需从文档中删除此标记,一切都会再次运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM