Делаю HTTP запрос в СМЭВ, у меня полностью сформированная xml строка, я ее вставляю в Soup в SendRequest и получаю нормальный ответ сервиса, то есть вроде все правильно. Но отправляю то же средствами 1С HTTP запросом - сервис мне возвращает что на входе не xml данные.
Что не так с запросом? Подозреваю что дело в заголовке, я скопировал их с Своапа, и например у меня так "Content-Type: text/xml;charset=UTF-8" , думаю тут что то не правильно, или в параметрах запроса что то не так
Еще раз. Гадать что не так можно долго.
В чем проблема поставить Fiddler?
https://www.telerik.com/fiddler Он покажет какой запрос у вас отправляется при рабочем варианте, и при HTTP соединении.
Найти отличия будет не сложно.
здравствуйте! подскажите, пожалуйста, Вам удалось реализовать отправку запроса в СМЭВ? дело в том, что мне поручили настроить интеграцию нашей базы 1с (нетиповой) с базой соц защиты через СМЭВ, я пока очень плохо представляю с чего даже начать. понимаю что надо отправлять http запросы, но непонятно как в них вставлять данные об эл подписях и т.п.. Если Вам удалось реализовать взаимодействие со СМЭВ, поделитесь, пожалуйста, Вашим опытом (может краткие шаги как Вы формировали сам запрос). Буду очень благодарна!!!!
(46)Удалось. Но с нуля это очень сложно. Там огромное количество нюансов. Нас спасло только то что мы делали свою разработку на базе конфигурации БГУ, та уже были процедуры формирования подписи и собственно пакета в смев. Остальное только на основе чтения документации по СМЕВу. Документация там очень хорошая
(47) спасибо! поняла! будем разбираться, в нашу нетиповую базу у нас внедрена БСП, по сути наверное там тоже должны быть функции формирования пакетов или только в типовых реализовано? и еще вопрос, Вы когда тестировали брали реальную ЭЦП или тестовую?
(48)Осторожно. В БСП там функции подписи есть, но у СМЭМа очень специфические требования собственно к пакету xml. Там много чего кроме самой подписи. По этому, если у вас конфигурация с нуля - я думаю вам будет лучше перенести код из БГУ, там обработка, по передаче есть иначе жуть,
Для тестирования используется тестовые контуры тех или иных сервисов СМЭВа, насколько помню там требований к ключу нет, если не ошибаюсь - там у них его для тестов вообще создать можно тестовый.
И еще от себя, в инструкциях сервисов - описываются и тестовые запросы - их и надо использовать. Произвольные запросы могут просто не срабатывать. Несколько дней на это потерял.
Для тестирования используется тестовые контуры тех или иных сервисов СМЭВа, насколько помню там требований к ключу нет, если не ошибаюсь - там у них его для тестов вообще создать можно тестовый.
Это не так. Требуется подпись реального участника с которой он зарегистрирован в СМЭВ, т.к. СМЭВ идентифицирует участника по сертификату, которым подписано сообщение.
(49) подскажите, пожалуйста, еще по поводу обработки. У нас есть типовая БГУ гос. учреждения, посмотрела обработки и нашла обработки "ОбменГИСГМП2" и "ОбменДаннымиИСРНИП". Вы эти обработки имеете в виду? и еще чисто ради интереса - какой Вид сведений Вы передавали/запрашивали через СМЭВ ?
Здравствуйте! Александр, у меня к Вам еще назрел вопрос по эл подписи, вдруг Вы в курсе (или может другие форумчане увидят мой вопрос и подскажут ). Разбираюсь с подписанием документов с помощью этой обработки, и там подписание идет с помощью подключения компоненты Компонента_xades и функции ГосУслугиКлиентСервер.ПодписатьДанныеПоФорматуГИСГМП20НаКлиенте. В результате формат подписи соответствует подписи физ лица. А у нас подпись выдана на орган власти, обезличенная. Вы случайно не знаете какую функцию по подписанию нужно использовать в таком случае? все посмотрела, и вроде как в общих модулях нашла два вида шаблона xml:
// Вариант "furs.mark.crpt.ru_v1".
Функция КонвертXML1()
КонецФункции
- один из них для физ лица, другой для органа власти, но при отладке не нашла каким образом выбирается формат подписи. Или он изначально заложен в компоненте и тогда надо выбирать другую компоненту? Буду признательна за любую помощь!
- один из них для физ лица, другой для органа власти, но при отладке не нашла каким образом выбирается формат подписи.
Эти функции не используются при обмене со СМЭВ в БГУ. То есть при вызове ГосУслугиКлиентСервер.ПодписатьДанныеПоФорматуГИСГМП20НаКлиенте.
В компоненту передается строка с xml, имя узла, который подписывается и сертификат подписи с паролем (или без).
XML вы должны сформировать самостоятельно заранее.
Далее компонента вернет блок подписи Signature, который вставляется в этот XML.
(58) меня смущает блок "keyinfo". Прикладываю для примера выдержку из СМЭВ подписи ФЛ и подписи ОВ (ИС), у них этот блок отличается. Т.е. в БГУ программа у меня формирует этот блок с тегами как у ФЛ.
PS Спасибо Вам за отклик!!! (возможно мои вопросы Вам кажутся глупыми, но я всего пол года в 1с, а с ЭЦП впервые работаю, не судите меня строго за мои вопросы!)
(59)То что у вас на скрине это взаимодействие со СМЭВ 2.0. Там 2 разных подписи, одна в header, другая в body.
То что вы смотрите в БГУ2 - это обмен со СМЭВ 3.0, там формат подписей разный.
Но. В БГУ2 есть взаимодействие с ГИС ГМП 1.6 через СМЭВ 2.0. Там подпись в таком же формате, как вам надо. Смотрите в эту сторону, если вам надо именно со СМЭВ 2.0.
(60) спасибо Вам огромное! Вы мне очень помогли! Действительно, мне скинули для изучения инструкцию по СМЭВ 2, не ту что надо(((( а версию я не проверила... эх...
(62)
(62) Здравствуйте! Александр, можно к Вам обратиться еще раз за помощью? или может другие участники подскажут. Буду признательная за ответы. Пытаюсь разобраться с подписанием ЭЦП на сервере (на сервер установлен криптопровайдер, сертификат ЭЦП, сервер на линуксе), взяла за основу функцию по подписанию из типовой БГУ:
Функция ПодписатьДанныеПоФорматуГИСГМП20НаСервере(Участник,СодержимоеФайла,ТекстОшибки,Знач ИмяУзлаПодписиОВ="") Экспорт
...
Если ЗначениеЗаполнено(ИмяУзлаПодписиОВ) Тогда
Отправитель = НастройкиУчастника.Отправитель;
НастройкиОтправителя = НастройкиПодисиУчастников[Отправитель];
ДанныеСертификатаЗаголовка= НастройкиОтправителя.ДанныеСертификатаСообщения;
Попытка
КомпонентаПодписи.ПодписатьXMLDSignСМЭВ3(
СодержимоеФайла,
ИмяУзлаПодписиОВ,
ДанныеСертификатаЗаголовка,
Истина,
Истина,
НастройкиОтправителя.ПарольЭПСообщения);
Подпись = КомпонентаПодписи.Подпись;
Исключение
ТекстОшибки = НСтр("ru='При формировании подписи ОВ возникла ошибка");
Возврат ТекстОшибки;
КонецПопытки;
Подписано = Истина;
КонецЕсли;
возврат Подпись;
конецФункции
Показать
И вот вопрос, если в xml нет русских букв, то подпись идет хорошо, все подписывает, но если прописать значение какого-либо атрибута русскими буквами, то выдает ошибку (см вложение). Я понимаю что-где проблема скорее всего с кодировкой, но как ее можно исправить?
(63)
Вам удалось решить вопрос подписания с кириллицей внутри?
1С нам ответила, что это ошибка работы внешней компоненты в среде Linux, но пока они не могут воспроизвести проблему.
Так же они запросили подробные сведения о сервере - версия ОС, региональные настройки и проч.
Функция ПолучитьПараметрыСоединения()
Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "application/xml; charset=UTF-8");
Заголовки.Вставить("Authorization","Basic "+Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(Логин+":"+Пароль)));
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
Соединение = Новый HTTPСоединение(Сервер,,,,,,ЗащищенноеСоединение);
Возврат Новый ФиксированнаяСтруктура("Соединение,Заголовки",Соединение,Заголовки);
КонецФункции
(9) Там не надо ничего особенного передавать.
В БГУ2 соответствие формируется так:
СоответствиеЗаголовковФорматов = Новый ФиксированноеСоответствие(ЭкспортФайлов.ПолучитьЗаголовкиМассиваФорматов(НастройкаОбмена, МассивФ));
Там все просто.
Есть 2 общих заголовка, значения которых заполняются в этой функции:
ОбщиеЗаголовки = Новый Соответствие;
ОбщиеЗаголовки.Вставить("Connection", "Keep-Alive");
ОбщиеЗаголовки.Вставить("Content-Type", "text/xml; charset=utf-8");
Далее в форматах обмена есть настройки заголовков.
Они могут быть разные для разных форматов.
В них указывается заголовок "SOAPAction" - в зависимости от вида сообщения его значения "urn:GetResponse", "urn:SendRequest", "urn:Ack".
Собственно все.
(17)Поставил не использовать - не помогло
Тут вот еще что, убрал все заголовки кроме последнего (В справочнике у меня только одно соответствие везде) так выдало
Unmarshalling Error: Unexpected character (CTRL-CHAR, code 152) expected '=' at [row,col {unknown-source}]: [8,26]
у меня smev/v1.2/ws это АдресРесурса правильно?
(24)С описанными выше заголовками, и настройкой BOM - не использовать, успешно отправилось сообщение на адрес тестового стенда.
Заголовки были:
Заголовоки.Вставить("Content-type", "text/xml; charset=utf-8");
Заголовоки.Вставить("Connection", "Keep-Alive");
Заголовоки.Вставить("SOAPAction","""urn:SendRequest""");
(26)да в своапе я это тоже получаю, 1с ка никак не отправит
у меня сервер smev3-n0.test.gosuslugi.ru
порт 750
ресурс smev/v1.2/ws?wsdl
ошибка на скрине, ну что у меня не так то
(34)В HTTPСоединении есть параметр - прокси. Настройка для прокси-сервера задается в настройках пользователя. Это БСПшный функционал.
Эта же настройка используется и при обмене с ГИС ГМП.
(6)рад бы, но это жутко как сложно кажется, там целая цепочка вызовов и в конце значение ссылки справочника подставляется в квадратные скобки, вообще не понимаю как это формируется
Еще раз. Гадать что не так можно долго.
В чем проблема поставить Fiddler?
https://www.telerik.com/fiddler Он покажет какой запрос у вас отправляется при рабочем варианте, и при HTTP соединении.
Найти отличия будет не сложно.
(35)Ошибка как на скрине в (28) к этому не относится, это ошибка отправки.
Если файл не корректный - это уже в ответе от смэв вернется, но сначала надо отправить.