Простой XML-RPC клиент на PHP

Однажды мне потребовалось выполнить несколько XML-RPC запросов, и я столкнулся с недостатком клиентов с простой и работающей реализацией данного механизма.

Я перепробовал различные библиотеки, но они оказались слишком сложными. Например, реализация XML-RPC из репозитория PEAR довольно сложна в установке на Windows, а на линуксовом шаред-хостинге ее не всегда возможно установить. XML-RPC на sourceforge имеет некоторые проблемы с кодировкой UTF-8. Так что я быстро создал свою простейшую реализацию XML-RPC клиента.

Следующий класс позволит вам выполнять XML-RPC вызовы из PHP. Он решает проблемы с кодировкой (к примеру, стандартная реализация XML-RPC в PHP плохо работает с Кириллицей)

class XmlRpcClient {
	public $encoding;
	public $server;
	public $endpoint;
	
	public function __construct($server, $endpoint, $encoding = 'UTF-8') {
		$this->server = $server;
		$this->endpoint = $endpoint;
		$this->encoding = $encoding;
	}
	
	public function call($method, $params = array()) {
		$request = xmlrpc_encode_request(
			$method,
			$params,
			array('escaping' => 'markup', 'encoding' => $this->encoding)
		);

		$context = stream_context_create(array('http' => array(
			'method' => "POST",
			'header' => "Content-Type: text/xml\r\nUser-Agent: PHPRPC/1.0\r\nHost: ".$this->server."\r\n",
			'content' => $request
		)));

		$server = "http://".$this->server.$this->endpoint;
		$file = file_get_contents($server, false, $context);

		return xmlrpc_decode($file);
	}
}

PS: на самом деле это старый пост из моего старого блога. И публикую я его по двум причинам:

  1. Он может оказаться кому-либо полезным.
  2. У меня есть цель публиковать по 1 статье в месяц, а поскольку у меня нет времени для написания новой статьи, я решил возродить старую.

И с Новым годом каждого! Желаю продуктивности, самореализации и достаточного количества времени для исполнения лучшего из ваших идей прямо здесь и сейчас!