protected function prepareHttpResponse($data, $status, $exception = null)
	{
	    
	    $error = $this->getRequest()->getHeader(
	            self::HEADER_ERRORS, 
	            self::HEADER_ERRORS_DEFAULT);
	    
	    $forceHtmlContentType = $this->getRequest()->getHeader(
	            self::HEADER_FORCE_CONTENT_HTML,
	            false);
	    
	    if ($error instanceof HeaderInterface) {
	        $error = $error->getFieldValue();
	    }
	    
	    $response = $this->getResponse();
	    
	    $headers = array(
	    	'Cache-Control' => 'no-cache, must-revalidate',
	        'Pragma' 		=> 'no-cache',
	    	'Expires' 		=> '2000-01-01 00:00:00',
            'Content-Type'  => 'application/json',
	    );
	    
	    if ($forceHtmlContentType) {
	        $headers['Content-Type'] = 'text/html';
	    }

	    $response->getHeaders()->addHeaders($headers);
	    
	    // update response status code
	    $response->setStatusCode(
        	$status
        );
	    
	    // update reason phrase
	    if($exception){
	        
	        if ($exception instanceof ServiceException) {
	            $message = $exception->getMessage();
	        } else {
	            $message = 'Unknown exception';
	        }
	        
	    	$response->setReasonPhrase(
    	        $message
	    	);
	    }
	    
	    if ($data instanceof \Zend\Http\Response) {
	        
    	    // Attach custom stream response sender listener
	        // to send the stream to output buffer in chunks
	        if ($data instanceof Stream) {
	            $sendReponseListener = $this->getServiceLocator()->get('SendResponseListener');
	            $sendReponseListener->getEventManager()->attach(
	                    SendResponseEvent::EVENT_SEND_RESPONSE,
	                    new StreamResponseSender(),
	                    10000);
	        }
	        
	        return $data;
	    } else {
	        
	        $responseModel = array(
                'd' => $data
	        );
	        
	        // Append exception data
	        if ($exception) {
	            
	            if ($error == self::HEADER_ERRORS_VERBOSE && $exception instanceof ServiceException) {
	                $responseModel['e'] = array(
                        'm' => $exception->getRawMessage(),
                        'c' => $exception->getCode(),
                        'a' => $exception->getVars()
	                );
	                
	            } else {
	                $responseModel['e'] = array(
                        'm' => $response->getReasonPhrase(),
                        'c' => $exception->getCode(),
	                );
	            }
	        }
	        
	        try {
	            $response->setContent(JsonEncoder::encode($responseModel, true));
	        } catch (Exception $e) {
	            
	            if ($e instanceof RecursionException) {
	                $message = self::CYCLIC_DATA_ERROR;
	            } else {
	                $message = $e->getMessage();
	            }
	            
	            $response->setReasonPhrase(
                    $message
	            );
	            
	            $response->setStatusCode(
                    self::STATUS_UNKNOWN_EXCEPTION
	            );
	            
	            $response->setContent(JsonEncoder::encode([
                    'd' => null,
                    'e' => [
	                   'm' => $message,
	                   'c' => $e->getCode()
	               ]
	            ], true));
	        }
	        
	        return $response;
	    }
	}
protected function prepareHttpResponse($data, $status, $exception = null)
	{
	    
	    $error = $this->getRequest()->getHeader(
	            self::HEADER_ERRORS, 
	            self::HEADER_ERRORS_DEFAULT);
	    
	    $forceHtmlContentType = $this->getRequest()->getHeader(
	            self::HEADER_FORCE_CONTENT_HTML,
	            false);
	    
	    if ($error instanceof HeaderInterface) {
	        $error = $error->getFieldValue();
	    }
	    
	    $response = $this->getResponse();
	    
	    $headers = array(
	    	'Cache-Control' => 'no-cache, must-revalidate',
	        'Pragma' 		=> 'no-cache',
	    	'Expires' 		=> '2000-01-01 00:00:00',
            'Content-Type'  => 'application/json',
	    );
	    
	    if ($forceHtmlContentType) {
	        $headers['Content-Type'] = 'text/html';
	    }

	    $response->getHeaders()->addHeaders($headers);
	    
	    // update response status code
	    $response->setStatusCode(
        	$status
        );
	    
	    // update reason phrase
	    if($exception){
	        
	        if ($exception instanceof ServiceException) {
	            $message = $exception->getMessage();
	        } else {
	            $message = 'Unknown exception';
	        }
	        
	    	$response->setReasonPhrase(
    	        $message
	    	);
	    }
	    
	    if ($data instanceof \Zend\Http\Response) {
	        
    	    // Attach custom stream response sender listener
	        // to send the stream to output buffer in chunks
	        if ($data instanceof Stream) {
	            $sendReponseListener = $this->getServiceLocator()->get('SendResponseListener');
	            $sendReponseListener->getEventManager()->attach(
	                    SendResponseEvent::EVENT_SEND_RESPONSE,
	                    new StreamResponseSender(),
	                    10000);
	        }
	        
	        return $data;
	    } else {
	        
	        $responseModel = array(
                'd' => $data
	        );
	        
	        // Append exception data
	        if ($exception) {
	            
	            if ($error == self::HEADER_ERRORS_VERBOSE && $exception instanceof ServiceException) {
	                $responseModel['e'] = array(
                        'm' => $exception->getRawMessage(),
                        'c' => $exception->getCode(),
                        'a' => $exception->getVars()
	                );
	                
	            } else {
	                $responseModel['e'] = array(
                        'm' => $response->getReasonPhrase(),
                        'c' => $exception->getCode(),
	                );
	            }
	        }
	        
	        try {
	            $response->setContent(JsonEncoder::encode($responseModel, true));
	        } catch (Exception $e) {
	            
	            if ($e instanceof RecursionException) {
	                $message = self::CYCLIC_DATA_ERROR;
	            } else {
	                $message = $e->getMessage();
	            }
	            
	            $response->setReasonPhrase(
                    $message
	            );
	            
	            $response->setStatusCode(
                    self::STATUS_UNKNOWN_EXCEPTION
	            );
	            
	            $response->setContent(JsonEncoder::encode([
                    'd' => null,
                    'e' => [
	                   'm' => $message,
	                   'c' => $e->getCode()
	               ]
	            ], true));
	        }
	        
	        return $response;
	    }
	}
protected function prepareHttpResponse ( $ data , $ status , $ exception = null ) { $ error = $ this -> getRequest ( ) -> getHeader ( self :: HEADER_ERRORS , self :: HEADER_ERRORS_DEFAULT ) ; $ forceHtmlContentType = $ this -> getRequest ( ) -> getHeader ( self :: HEADER_FORCE_CONTENT_HTML , false ) ; if ( $ error instanceof HeaderInterface ) { $ error = $ error -> getFieldValue ( ) ; } $ response = $ this -> getResponse ( ) ; $ headers = array ( 'Cache-Control' => 'no-cache, must-revalidate' , 'Pragma' => 'no-cache' , 'Expires' => '2000-01-01 00:00:00' , 'Content-Type' => 'application/json' , ) ; if ( $ forceHtmlContentType ) { $ headers [ 'Content-Type' ] = 'text/html' ; } $ response -> getHeaders ( ) -> addHeaders ( $ headers ) ; // update response status code $ response -> setStatusCode ( $ status ) ; // update reason phrase if ( $ exception ) { if ( $ exception instanceof ServiceException ) { $ message = $ exception -> getMessage ( ) ; } else { $ message = 'Unknown exception' ; } $ response -> setReasonPhrase ( $ message ) ; } if ( $ data instanceof \ Zend \ Http \ Response ) { // Attach custom stream response sender listener // to send the stream to output buffer in chunks if ( $ data instanceof Stream ) { $ sendReponseListener = $ this -> getServiceLocator ( ) -> get ( 'SendResponseListener' ) ; $ sendReponseListener -> getEventManager ( ) -> attach ( SendResponseEvent :: EVENT_SEND_RESPONSE , new StreamResponseSender ( ) , 10000 ) ; } return $ data ; } else { $ responseModel = array ( 'd' => $ data ) ; // Append exception data if ( $ exception ) { if ( $ error == self :: HEADER_ERRORS_VERBOSE && $ exception instanceof ServiceException ) { $ responseModel [ 'e' ] = array ( 'm' => $ exception -> getRawMessage ( ) , 'c' => $ exception -> getCode ( ) , 'a' => $ exception -> getVars ( ) ) ; } else { $ responseModel [ 'e' ] = array ( 'm' => $ response -> getReasonPhrase ( ) , 'c' => $ exception -> getCode ( ) , ) ; } } try { $ response -> setContent ( JsonEncoder :: encode ( $ responseModel , true ) ) ; } catch ( Exception $ e ) { if ( $ e instanceof RecursionException ) { $ message = self :: CYCLIC_DATA_ERROR ; } else { $ message = $ e -> getMessage ( ) ; } $ response -> setReasonPhrase ( $ message ) ; $ response -> setStatusCode ( self :: STATUS_UNKNOWN_EXCEPTION ) ; $ response -> setContent ( JsonEncoder :: encode ( [ 'd' => null , 'e' => [ 'm' => $ message , 'c' => $ e -> getCode ( ) ] ] , true ) ) ; } return $ response ; } }
Prepares HTTP response

@param mixed $data
@param int $status
@param \Exception|null $exception
@return Response
Prepares HTTP response