Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 卢拉卡斯特·雷斯勒正在发送';text/html';而不是JSON_Php_Rest_Restler - Fatal编程技术网

Php 卢拉卡斯特·雷斯勒正在发送';text/html';而不是JSON

Php 卢拉卡斯特·雷斯勒正在发送';text/html';而不是JSON,php,rest,restler,Php,Rest,Restler,我有一个用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

我有一个用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();
这是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有深入了解的人可以添加一些说明


只要从文档中删除此标签,一切都会恢复正常。

感谢@david casillas报告此问题。您是对的,
@class
应为特定格式,这导致了问题。我们将在下一版本中修复它
@class
当前用于在初始化后设置另一个类的属性。阅读更多细节。
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;

}