[英]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.