Интеграция 1С и не 1С WEb - сервис. Выдаёт ошибку при отправке
Добрый день. Надо "научить" 1С ERP "общаться" с некой программой. Был выдан WS ссылка, подцепил её к 1С в общие метаданные "WS-ссылки" получил описания пакетов, составил по присланному XDTO длинную XML строку, а при отсылке этой длинной строки с помощью описанного метода SendMessage получаю ошибку :
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Указанное в сообщении действие SOAP, "", не соответствует действию HTTP SOAP, "http://********/********ServiceContract/SendMessage".
Код ошибки: Sender.ActionMismatch
Техническая информация:
<s:Detail xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<a:ProblemHeaderQName>a:Action</a:ProblemHeaderQName>
</s:Detail>
{ВнешняяОбработка.КИТ_DataScan.Форма.Форма.Форма(294)}: Результат = Прокси.SendMessage(WSПараметр.value);
{ВнешняяОбработка.КИТ_DataScan.Форма.Форма.Форма(5)}: ФункцияОбменаНоменклатура(Адрес);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {http://********}:Service:SendMessage()
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Указанное в сообщении действие SOAP, "", не соответствует действию HTTP SOAP, "http://*******/*******ServiceContract/SendMessage".
Код ошибки: Sender.ActionMismatch
Техническая информация:
<s:Detail xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<a:ProblemHeaderQName>a:Action</a:ProblemHeaderQName>
</s:Detail>
Потом решили сделать более универсально данные поws ссылке в РС прописываются. оттуда и "ВыборкаНастроек".
Описание, Прокси создаётся без ошибок, WSПараметры создаются заполняются без ошибок. При SendMessage ошибка.
Последнюю строку пробовал в разных вариациях ?
Результат = Прокси.SendMessage(WSПараметр.value);
Результат = Прокси.SendMessage(WSПараметр);
Результат = Прокси.SendMessage(ДанныеXML);
Прокси.SendMessage(WSПараметр.value);
Прокси.SendMessage(WSПараметр);
Прокси.SendMessage(ДанныеXML);
Создавал прокси по общему объекту WSСсылки и конструктором и напрямую прописывал параметры и через вызов определения и т.д. и т.п. Авторизация при подключении прокси не нужна.
Что это вообще может быть? Не нашел описания буквально нигде.
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Указанное в сообщении действие SOAP, "", не соответствует действию HTTP SOAP, "http://********/********ServiceContract/SendMessage".
Код ошибки: Sender.ActionMismatch
Техническая информация:
<s:Detail xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<a:ProblemHeaderQName>a:Action</a:ProblemHeaderQName>
</s:Detail>
{ВнешняяОбработка.КИТ_DataScan.Форма.Форма.Форма(294)}: Результат = Прокси.SendMessage(WSПараметр.value);
{ВнешняяОбработка.КИТ_DataScan.Форма.Форма.Форма(5)}: ФункцияОбменаНоменклатура(Адрес);
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: {http://********}:Service:SendMessage()
по причине:
При вызове веб-сервиса произошла ошибка. Ошибка SOAP сервера: Указанное в сообщении действие SOAP, "", не соответствует действию HTTP SOAP, "http://*******/*******ServiceContract/SendMessage".
Код ошибки: Sender.ActionMismatch
Техническая информация:
<s:Detail xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<a:ProblemHeaderQName>a:Action</a:ProblemHeaderQName>
</s:Detail>
WSОпределение = Новый WSОпределения(?(Прав(ВыборкаНастройки.СсылкаПодключения, 1) = "/",
Лев(ВыборкаНастройки.СсылкаПодключения, СтрДлина(ВыборкаНастройки.СсылкаПодключения) - 1), ВыборкаНастройки.СсылкаПодключения)
+ "?singleWsdl");
WSСервис = WSОпределение.Сервисы[0];
Прокси = Новый WSПрокси(WSОпределение, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя);
ТипWSПараметра = Прокси.ФабрикаXDTO.Пакеты.Получить((WSСервис.URIПространстваИмен)).Получить("SendMessage");
WSПараметр = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра);
WSПараметр.value = ДанныеXML;
Результат = Прокси.SendMessage(WSПараметр.value);
ПоказатьПотом решили сделать более универсально данные поws ссылке в РС прописываются. оттуда и "ВыборкаНастроек".
Описание, Прокси создаётся без ошибок, WSПараметры создаются заполняются без ошибок. При SendMessage ошибка.
Последнюю строку пробовал в разных вариациях ?
Результат = Прокси.SendMessage(WSПараметр.value);
Результат = Прокси.SendMessage(WSПараметр);
Результат = Прокси.SendMessage(ДанныеXML);
Прокси.SendMessage(WSПараметр.value);
Прокси.SendMessage(WSПараметр);
Прокси.SendMessage(ДанныеXML);
Создавал прокси по общему объекту WSСсылки и конструктором и напрямую прописывал параметры и через вызов определения и т.д. и т.п. Авторизация при подключении прокси не нужна.
Что это вообще может быть? Не нашел описания буквально нигде.
Прикрепленные файлы:
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
С другой стороны проверяли свой сервис через программу SOAPUI, как бы всё работает. Не совсем понятно может у 1С какие то более расширенные требования или я как то не так вызываю функцию (SendMessage функция которая должна вернуть 1 если отправляемая XML строка верно построена). На чем написана принимающая сторона понятия не имею.
Перепробовал и перечитал очень многое. Если честно идей уже 0. С WSDL работал 2 раза, правда обмен был между 1С и 1С. Проблем не было вообще.
При переходе по предоставленной ссылке открывается следующее описание в прикрепленном файле.
Перепробовал и перечитал очень многое. Если честно идей уже 0. С WSDL работал 2 раза, правда обмен был между 1С и 1С. Проблем не было вообще.
При переходе по предоставленной ссылке открывается следующее описание в прикрепленном файле.
Прикрепленные файлы:
(4) Не, то же самое.
Ну просто вот как я думаю :
Когда создаёшь WSDL между 1С и 1С то получается метод описывается полностью на стороне приёмника, а в источнике просто этот метод вызывается и туда передаётся параметр. Вот у меня в ТЗ "параметр" - это xml строка, я ей сформировал передал туда - а там ошибка. Получается с той стороны конструктора нет, получается как то так. Но учитывая что SOAPUI даёт ответ, то наверное и правда HTTP запрос надо написать как написано в 3, пока ловлю ошибку 415. Читаю литературу.
Ну просто вот как я думаю :
Когда создаёшь WSDL между 1С и 1С то получается метод описывается полностью на стороне приёмника, а в источнике просто этот метод вызывается и туда передаётся параметр. Вот у меня в ТЗ "параметр" - это xml строка, я ей сформировал передал туда - а там ошибка. Получается с той стороны конструктора нет, получается как то так. Но учитывая что SOAPUI даёт ответ, то наверное и правда HTTP запрос надо написать как написано в 3, пока ловлю ошибку 415. Читаю литературу.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот