/** * Perform an XML-RPC request and return a response. * * @param Polycast_XmlRpc_Request $request * @param null|Polycast_XmlRpc_Response $response * @return void * @throws Polycast_XmlRpc_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(); if ($http->getUri() === null) { $http->setUri($this->_serverAddress); } $http->setHeaders(array('Content-Type: text/xml; charset=utf-8', 'Accept: text/xml')); if ($http->getHeader('user-agent') === null) { $http->setHeaders(array('User-Agent: Polycast_XmlRpc_Client')); } $xml = $this->_lastRequest->__toString(); $http->setRawData($xml); $httpResponse = $http->request(Zend_Http_Client::POST); if (!$httpResponse->isSuccessful()) { /** * Exception thrown when an HTTP error occurs * @see Polycast_XmlRpc_Client_HttpException */ require_once 'Polycast/XmlRpc/Client/HttpException.php'; throw new Polycast_XmlRpc_Client_HttpException($httpResponse->getMessage(), $httpResponse->getStatus()); } if ($response === null) { $response = new Polycast_XmlRpc_Response(); } $this->_lastResponse = $response; $this->_lastResponse->loadXml($httpResponse->getBody()); }