===== Протокол/Общее ===== Протокол состоит из двух частей: запросы к серверу и ответы сервера. Запросы к серверу передаются методом 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// – функция заблокирована администратором