===== Протокол/Общее =====
Протокол состоит из двух частей: запросы к серверу и ответы сервера. Запросы к серверу передаются методом POST. Ответы сервера формируются в виде XML.
==== Запросы клиента ====
Каждый запрос должен содержать в обязательном порядке параметр POST session_id – ID сессии клиента.
Исключением является только функция авторизации клиента. Функция авторизации содержит два параметра:
login - содержит имя пользователя на форуме и\\
password – пароль.
Если какой-либо из параметров отсутствует, сервер вернет ошибку. Если отсутствует параметр action – сервер отобразит Web интерфейс. Ниже в описании протокола параметр session_id я буду опускать, считается, что он присутствует всегда. Все описанные ниже параметры POST для конкретного значения параметра action являются обязательными.
Пример запроса авторизации:\\
https://domain/xfr/index.php?action=auth&login=nickname&password=123456
Пример запроса списка категорий:\\ http://domain/xfr/index.php?session_id=hsg8745th3qgq9g3g&action=get_categories&categories=1,2,3,4
==== Ответы сервера ====
Как упоминалось выше, ответы сервера формируются в XML формате. Перед выводом XML отдаются заголовки:
@header('Content-Type: text/xml; windows-1251');
@header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
@header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
@header('Pragma: public');
=== Примечание ===
кодировка контента может быть и другой, в зависимости от настроек сервера и форума.
Вот типичный пример ответа сервера:
1:
2:
3: NO_RIGHTS
4: 1
5: 0.002
6:
Строка 1 содержит объявление XML, включающее версию стандарта XML и кодировку.\\
Строка 2 содержит корневой элемент //protocol// единственным атрибутом version, описывающим текущую версию протокола.\\
Ниже (строки 3,4) содержатся остальные элементы протокола. В описании я буду опускать объявление XML и корневой элемент, т.к. они присутствуют всегда.
Все ошибки описываются в элементе //error//. Внутри элемента содержится код ошибки. Элемент //MYSQL_QUERY_COUNT// информативный, и содержит число выполненных запросов скрипта к БД. Элемент //SCRIPT_EXECUTION_TIME// содержит время выполнения скрипта в микросекундах.
==== Общая группа ошибок ====
//ERROR_NO_ACTION// – параметр “action” не передан в POST-запросе
//ERROR_NO_LOGIN// - параметр “login” не передан в POST-запросе
//ERROR_NO_PASSWORD//- параметр “password” не передан в POST-запросе
//ERROR_LOGIN_FAILED// – ошибка авторизации пользователя
//ERROR_SESSION_LOGIN_FAILED// – ошибка авторизации пользователя через сессию
//ERROR_NO_RIGHTS// – нет прав для использования данной функции
//ERROR_FUNCTION_BLOCKED// – функция заблокирована администратором