Несколько месяцев назад я написал небольшое PHP
приложение, которое использует WordPress XMLRPC library
для синхронизации двух отдельных блогов WordPress. У меня есть общая функция «RPCRequest», которая упаковывает запрос, отправляет его и возвращает ответ сервера, и у меня есть несколько более конкретных функций, которые настраивают тип отправляемого запроса.
В этом конкретном случае я звоню "getPostIDs", чтобы получить количество сообщений на удаленном сервере и их соответствующие посты. Вот код:
$rpc = new WordRPC('http://mywordpressurl.com/xmlrpc.php', 'username', 'password');
$rpc->getPostIDs();
Я получаю следующее сообщение об ошибке:
expat reports error code 5
description: Invalid document end
line: 1
column: 1
byte index: 0
total bytes: 0
data beginning 0 before byte index:
Что-то вроде окончания скалолазания, что тоже странно. Но поскольку сообщение об ошибке не отформатировано в XML, моя интуиция заключается в том, что локальная библиотека XMLRPC генерирует ошибку, а не удаленный сервер.
Даже более странно, если я изменю вызов getPostIDs () на getPostIDs (1) или любое другое целое число, это работает просто отлично.
Вот код для класса WordRPC:
public function __construct($url, $user, $pass) {
$this->url = $url;
$this->username = $user;
$this->password = $pass;
$id = $this->RPCRequest("blogger.getUserInfo",
array("null", $this->username, $this->password));
$this->blogID = $id['userid'];
}
public function RPCRequest($method, $params) {
$request = xmlrpc_encode_request($method, $params);
$context = stream_context_create(array('http' => array(
'method' => "POST",
'header' => "Content-Type: text/xml",
'content' => $request
)));
$file = file_get_contents($this->url, false, $context);
return xmlrpc_decode($file);
}
public function getPostIDs($num_posts = 0) {
return $this->RPCRequest("mt.getRecentPostTitles",
array($this->blogID, $this->username,
$this->password, $num_posts));
}
Как я уже говорил, все работает нормально, если для "getPostIDs" задан положительный целочисленный аргумент. Кроме того, это работало на отлично, как есть; параметр по умолчанию 0 просто указывает серверу RPC, что он должен получить все сообщений, а не только самые последние $num_posts
сообщений. Только недавно эта ошибка начала появляться.
Я попытался найти ошибку без особой удачи. Мой вопрос, таким образом, , что именно означает «код ошибки 5 отчетов об экспатах» и кто генерирует ошибку?