уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

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

Я написал небольшую программку, которая проводит анализ используемой в Joomla! библиотеки XML-RPC и представляет полученную информацию в более-менее удобном для нас виде. По ходу описания работы с программой я расскажу где, какие методы использовались и что мы в итоге получаем. Также программа может частично проверить и библиотеку XML-RPC WordPress, но с небольшими ограничениями.

xmlrpc_exp1

При нажатии на кнопку “Опросить” выполняется метод system.getCapabilities. У этого метода нет входных параметров и возвращает он всю информацию по библиотеке, которую разработчики посчитали необходимым предоставить. При этом ответ представляет собой структуру (stuct) в которой каждый элемент (member) содержит название характеристики, и в value ещё одну вложенную структуру со значением URL перейдя по которому можно найти информацию о характеристике и версию. То есть получаем структуру структур :) Выглядит это так:

xmlrpc_exp2На рисунке представлен фрагмент XML, который содержит информацию по XML-RPC – URL спецификации протокола и версию протокола (1). Аналогичным образом оформляются и другие доступные характеристики.

В списке слева отображается список доступных методов.  Здесь я использовал уже известный нам метод system.listMethods.

При выборе метода в списке выполняется ещё два запроса. Первый – это метод system.methodHelp, который по имени метода возвращает его описание. Этот метод отсутствует в WordPress. Для формирования XML я, как и в предыдущем посте использовал NativeXML. Запрос для system.methodHelp можно составить, например так:

XMLDoc.Root.NodeNew('methodName').ValueAsString := 'system.methodHelp';
XMLDoc.Root.NodeNew('params').NodeNew('param').NodeNew('value').NodeNew('string').ValueAsString:=Method;

где Method — это строка, содержащие название метода по которому мы должны получить описание. В результате ответ будет содержать всего один параметр — строку, которую можно получить, использовав событие OnNodeLoaded у документа TNativeXML:

procedure TForm2.XmlMethodDesc(Sender: TObject; Node: TXmlNode);
begin
 if Node.Name = 'string' then
   ShowMessage(Node.ValueAsString)//получили описание метода
end;

Следующие метод — system.methodSignature, который возвращает список всех входных параметров и тип возвращаемого результата. Также, как и для предыдущего метода, для system.methodSignature необходимо указывать название метода.

Ответ представляет собой матрицу (array of array) каждый элемент которой представляет собой строку, содержащую тип возвращаемого результата или входного параметра. При этом следует отметить, что первый элемент массива содержит тип возвращаемого результата, а все последующие – входные параметры в том порядке, в котором они указываются при вызове метода. Парсинг XML аналогичен представленному выше, т.е. надо просто прочитать содержимое узлов “string” в XML-документе.

На рисунке представлен вид программы с уже полученной информацией от сервера:

xmlrpc_exp3

Представлена информация по библиотеке и описание функции GetUserInfo из которой видно, что входными параметрами являются 3 строки, а на выходе получаем структуру. Какие строки подавать на вход – смотрим документацию по методу.

Вполне возможно, что на анализируемом сайте может быть отключен XML-RPC. Например, у DelphiFeeds.ru сервер XML-RPC отключен. В этом случае программа просто выведет соответствующее сообщение в информацию о библиотеке:

xmlrpc_exp4

В этом случае надо зайти в админку и включить соответствующий плагин Joomla! и всё заработает. А вот и сама программка для самоанализа Joomla! и, частично, WordPress:

Скачать исходник: Исходники —> Полезные программы

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
3 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Oleg
Oleg
23/10/2010 14:54

Спасибо за материал.
Планирую над подобной тематикой поработать для Drupal-а.
В частности как работает можно протестить на http://drupal.org/xmlrpc.php — exe-шник нормально опросил.
А можете еще и исходники приаттачить?

Максим
Максим
07/02/2011 02:21

Хорошая утилита. А можете исходник добавить?