/** * Perform an JSON-RPC request and return a response. * * @param Zend_Json_Server_Request $request * @param null|Zend_Json_Client_Response $response * @return void * @throws Zend_Json_Client_HttpException */ public function doRequest($request, $response = null) { $this->_lastRequest = $request; #iconv_set_encoding('input_encoding', 'UTF-8'); #iconv_set_encoding('output_encoding', 'UTF-8'); #iconv_set_encoding('internal_encoding', 'UTF-8'); $http = $this->getHttpClient(); $http->setUri($this->_serverAddress); $http->setHeaders(array('Content-Type: application/json-rpc; charset=utf-8', 'User-Agent: Zend_Json_Client/' . Zend_Version::VERSION, 'Accept: application/json-rpc')); $json = $this->_lastRequest->__toString(); $http->setRawData($json); $httpResponse = $http->request(Zend_Http_Client::POST); if (!$httpResponse->isSuccessful()) { /** * Exception thrown when an HTTP error occurs * @see Zend_XmlRpc_Client_HttpException */ require_once 'Zend/Json/Client/HttpException.php'; throw new Zend_Json_Client_HttpException($httpResponse->getMessage(), $httpResponse->getStatus()); } if ($response === null) { $response = new Zend_Json_Client_Response(); } $this->_lastResponse = $response; $this->_lastResponse->loadJson($httpResponse->getBody()); }