Перейти к основному содержимому

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

Для обработки запросов необходимо для каждого обработчика из описания SOAP-сервиса создать в модуле SOAP-сервиса метод. Имя метода следует указать в свойстве обработчика Метод. Например у сервиса есть обработчик AddToCart:

Обработчики:
-
Имя: AddToCart
Метод: ДобавитьВКорзину

В качестве метода обработчика назначен метод ДобавитьВКорзину. Данный метод следует задать в модуле сервиса:

// Структура, описывающая параметры метода обработчика
структура Item
пер Sku: Число
пер Name: Строка
пер Price: Число
;

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

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

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

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

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

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