Обработка запросов

Для обработки запросов необходимо для каждого обработчика из описания SOAP-сервиса создать в модуле SOAP-сервиса метод. Имя метода следует указать в свойстве обработчика Метод. Например у сервиса есть обработчик AddToCart:
Обработчики:
    -
        Имя: AddToCart
        Метод: ДобавитьВКорзину
В качестве метода обработчика назначен метод ДобавитьВКорзину. Данный метод следует задать в модуле сервиса:
// Структура, описывающая параметры метода обработчика
структура Item
    пер Sku: Число
    пер Name: Строка
    пер Price: Число
;

//Обработчик операции сервиса
метод ДобавитьВКорзину(Item: Item, Count: Число)
    // Метод, написанный разработчиком
;

Перегрузка методов-обработчиков SOAP-сервиса запрещена (в модуле SOAP-сервиса не может быть двух методов с одним и тем же именем). Иначе будет выброшена ошибка публикации проекта. Если метод-обработчик не задан, то также будет выброшена ошибка публикации проекта.

Обращение к операциям SOAP-сервиса осуществляется при помощи HTTP POST запроса. При обработке запроса в происходит следующее:

  1. По URL запроса находится нужный SOAP-сервис;
  2. Выполняется аутентификация по HTTP-заголовку Authorization;
  3. По HTTP-заголовку SOAPAction выбирается операция SOAP-сервиса;
  4. Входящее SOAP-сообщение десериализуется;
  5. Из входящего SOAP-сообщения формируются параметры на встроенном языке для передачи в обработчик;
  6. Вызывается метод обработчика, указанный в свойстве Метод. Значения параметров получаются из SOAP-сообщения, отправленного в сервис клиентом.

Если будет выполнен вызов неизвестной операции сервиса (в свойствах SOAP-сервиса нет обработчика с таким именем), то вернется результат HTTP 404 Not Found.

Если при обработке запроса выбрасывается исключение (в том числе и не обработанное прикладным кодом), формирует Fault SOAP-ответ и HTTP-код ответа 500 (Internal server error).