2013-04-09 49 views
1

我有JSON笨休息我有json的一個問題笨休息它不是關閉標籤

我想提出這個調用服務器問題,這個問題的,它不是關閉JSON標籤

S,USA」, 「clientUID」: 「7」, 「電子郵件」:NULL, 「idipad」: 「2」, 「dateModified」:空},{ 「id爲」: 「19」, 「UID」:空, 「名」: 「韋恩公司,公司」, 「手機」: 「932345324」, 「地址」:「二聖。 312,Gotham City「,」clientUID「:」7「,」email「:」[email protected]「,」idipad「:」1「,」dateModified「:null}]

其缺失最後}

這是創建響應的代碼:

$this->response(array('login'=>'login success!','user_admin_id'=>$user_id,'client'=>$client,'users'=>$users,'projects'=>$projects,'plans'=>$plans,'meetings'=>$meetings,'demands'=>$demands,'tasks'=>$tasks,'presences'=>$presences,'contractors'=>$contractors,'companies'=>$companies), 200); 

這是客戶端呼叫使用捲曲:

$這 - > curl->創建( 'http://dev.onplans.ch/onplans/index.php/api/example/login/format/json');

// Option & Options 
$this->curl->option(CURLOPT_BUFFERSIZE, 10); 
$this->curl->options(array(CURLOPT_BUFFERSIZE => 10)); 

// More human looking options 
$this->curl->option('buffersize', 10); 

// Login to HTTP user authentication 
$this->curl->http_login('admin', '1234'); 

// Post - If you do not use post, it will just run a GET request 
//$post = array('remember'=>'true','email'=>'[email protected]','password'=>'password'); 
     $post = array('remember'=>'true','email'=>'[email protected]','password'=>'password'); 
$this->curl->post($post); 

// Cookies - If you do not use post, it will just run a GET request 
$vars = array('remember'=>'true','email'=>'[email protected]','password'=>'password'); 
$this->curl->set_cookies($vars); 

// Proxy - Request the page through a proxy server 
// Port is optional, defaults to 80 
//$this->curl->proxy('http://example.com', 1080); 
//$this->curl->proxy('http://example.com'); 

// Proxy login 
//$this->curl->proxy_login('username', 'password'); 

// Execute - returns responce 
echo $this->curl->execute(); 

// Debug data ------------------------------------------------ 

// Errors 
$this->curl->error_code; // int 
$this->curl->error_string; 


     print_r('error :::::LOGINN REMOTE:::::'.$this->curl->error_string); 
// Information 
$this->curl->info; // array 

     print_r('info :::::::::::::'.$this->curl->info); 

響應屬於REST API笨菲爾

/** 
* Response 
* 
* Takes pure data and optionally a status code, then creates the response. 
* 
* @param array $data 
* @param null|int $http_code 
*/ 
public function response($data = array(), $http_code = null) 
{ 
    global $CFG; 

    // If data is empty and not code provide, error and bail 
    if (empty($data) && $http_code === null) 
    { 
     $http_code = 404; 

     // create the output variable here in the case of $this->response(array()); 
     $output = NULL; 
    } 

    // If data is empty but http code provided, keep the output empty 
    else if (empty($data) && is_numeric($http_code)) 
    { 
     $output = NULL; 
    } 

    // Otherwise (if no data but 200 provided) or some data, carry on camping! 
    else 
    { 
     // Is compression requested? 
     if ($CFG->item('compress_output') === TRUE && $this->_zlib_oc == FALSE) 
     { 
      if (extension_loaded('zlib')) 
      { 
       if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) AND strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE) 
       { 
        ob_start('ob_gzhandler'); 
       } 
      } 
     } 

     is_numeric($http_code) OR $http_code = 200; 

     // If the format method exists, call and return the output in that format 
     if (method_exists($this, '_format_'.$this->response->format)) 
     { 
      // Set the correct format header 
      header('Content-Type: '.$this->_supported_formats[$this->response->format]); 

      $output = $this->{'_format_'.$this->response->format}($data); 
     } 

     // If the format method exists, call and return the output in that format 
     elseif (method_exists($this->format, 'to_'.$this->response->format)) 
     { 
      // Set the correct format header 
      header('Content-Type: '.$this->_supported_formats[$this->response->format]); 

      $output = $this->format->factory($data)->{'to_'.$this->response->format}(); 
     } 

     // Format not supported, output directly 
     else 
     { 
      $output = $data; 
     } 
    } 

    header('HTTP/1.1: ' . $http_code); 
    header('Status: ' . $http_code); 

    // If zlib.output_compression is enabled it will compress the output, 
    // but it will not modify the content-length header to compensate for 
    // the reduction, causing the browser to hang waiting for more data. 
    // We'll just skip content-length in those cases. 
    if (! $this->_zlib_oc && ! $CFG->item('compress_output')) 
    { 
     header('Content-Length: ' . strlen($output)); 
    } 

    exit($output); 
} 
+0

有什麼'response'方法裏面? – 2013-04-09 12:58:20

+0

響應屬於菲爾鱘一個REST API – 2013-04-09 14:54:12

回答

2

這個答案是從Github issue引用。佩德羅迪尼斯也是我的客人。 我今天遇到這個問題,並採取了我很長時間來尋找解決方案。我在這裏分享,希望能幫助像我這樣的人。 關鍵是在庫文件來替換周圍管線430:REST_Controller.php:

header('Content-Length: ' . strlen($output)); 

通過

header('Content-Length: ' . strlen("'".$output."'")); 

UPDATE:問題是solved here 或者,你可以註釋掉的代碼,它將運行良好。 :)

相關問題