С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Веб-сервисы и WCF
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.81/26: Рейтинг темы: голосов - 26, средняя оценка - 4.81
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
1

Как отправить XML через SOAP запрос (для работы ГИС ГМП)

16.06.2016, 15:59. Просмотров 4796. Ответов 23
Метки нет (Все метки)

Здравствуйте. гос учереждения обязали вносить начисления в некий ГИС ГМП.

Говорится что есть некий веб сервис: http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663
также есть WSDL: http://smev-mvf.test.gosuslugi.ru:77...ID0003663/wsdl

Задача состоит в том, чтобы отправить XSD схему на этот сервис (или вообще хоть что то на него отправить дабы увидеть отклик с ошибкой). Ранее с этим я не сталкивался. Как понимаю набор классов называется WCF. Но в ютубе примеров подробных не нашел.

А в своем проекте(пусто) я нажимаю Add Service References - вписываю ссылку, которую выше представил, но студия пишет что сервис не найдет. Вообщем не знаю даже с чего начать

Покажите пожалуйста примеры простейших программ, решающих данную задачу. Сейчас важно просто понять, что сервис хочет получать и что он возвращает на мои запросы.

Спасибо, очень надеюсь на понимание.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 15:59
Ответы с готовыми решениями:

Осуществить подпись SOAP, по стандартам ГИС ГМП, принятого через TCP сокет
Здравствуйте. Требуется осуществить подпись SOAP, по стандартам ГИС ГМП,...

SOAP WSDL как получить XML для отправления
Есть файл WSDL. Он подключен к проекту. Не могу найти информацию, как с...

Как отправить файл через POST-запрос
как отправить файл через POST запрос?

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5)
Предыдущая тема: http://www.cyberforum.ru/web-services-wcf/thread1840159.html ...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (3)
Предыдущая тема: http://www.cyberforum.ru/web-services-wcf/thread1776736.html ...

23
aquaMakc
473 / 386 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
16.06.2016, 16:23 2
KennyPanders, а что говорят разработчики ГИС ГМП?
0
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
16.06.2016, 16:26  [ТС] 3
aquaMakc,как это часто бывает с российскими гос разработками - ничего. Тех поддержка просто перекидывает друг на дружку, и я не добиваюсь от них абсолютно ничего.
Все что удалось найти - это небольшой мануал по которому мне очень сложно понять что и как.
Вот он по ссылке представлен: http://help.quorum.ru:8090/pages/viewpage.action?pageId=2031805
0
aquaMakc
473 / 386 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
16.06.2016, 16:41 4
KennyPanders, посмотри, может тут что-то полезное найдёшь.

Добавлено через 11 минут
KennyPanders, вот, кстати, похоже та-же проблема
0
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
16.06.2016, 17:06  [ТС] 5
Тема большая,. Однако очень тяжело воспринимать то , что там написано. Да и написано там о ЖКХ.
Надеюсь мы и про ГМП что нибудь сочиним здесь общими усилиями
0
Storm23
Эксперт .NETАвтор FAQ
6575 / 3987 / 1449
Регистрация: 11.01.2015
Сообщений: 5,163
Записей в блоге: 32
16.06.2016, 17:10 6
Цитата Сообщение от KennyPanders Посмотреть сообщение
А в своем проекте(пусто) я нажимаю Add Service References - вписываю ссылку, которую выше представил, но студия пишет что сервис не найдет. Вообщем не знаю даже с чего начать
Все прекрасно работает. В Add Service References нужно добавлять ссылку на WSDL:
Как отправить XML через SOAP запрос (для работы ГИС ГМП)
Как отправить XML через SOAP запрос (для работы ГИС ГМП)
Как отправить XML через SOAP запрос (для работы ГИС ГМП)
1
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
16.06.2016, 17:16 7
Цитата Сообщение от KennyPanders Посмотреть сообщение
нажимаю Add Service References - вписываю ссылку, которую выше представил, но студия пишет что сервис не найдет.
Быть такого не может. Смотрим скрин. Нормальный сервис, и ссылка добавляется без проблем.
И в коде работает. Формат сообщений я не знаю, поэтому мне прилетает ошибка.))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleApplication19.ServiceReference1;
 
namespace ConsoleApplication19 {
    class Program {
        static void Main(string[] args) {
            using (SmevGISGMPServiceClient client = new SmevGISGMPServiceClient()) {
                BaseMessageType request = new BaseMessageType();
                BaseMessageType response = client.GISGMPTransferMsg(request);
                Console.ReadLine();
            }
        }
    }
}
1
Миниатюры
Как отправить XML через SOAP запрос (для работы ГИС ГМП)  
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
16.06.2016, 17:18  [ТС] 8
Storm23, insite2012 да действительно. Большое спасибо. Хотя буквально 20 минут назад та же самая операция не принесла результата.

Теперь нужно постараться правильно сформировать и отправить запрос.
0
aquaMakc
473 / 386 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
16.06.2016, 17:18 9
Цитата Сообщение от insite2012 Посмотреть сообщение
Быть такого не может.
Может. У меня, например, правда это связано с тем, что у нас админ, хороший человек, зарезал Студии выход в интернет и свалил в отпуск.
0
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
16.06.2016, 17:29 10
Цитата Сообщение от KennyPanders Посмотреть сообщение
послать хоть какой то запрос к этой системе. И увидеть ответ.
Выше я показал, есть и запрос и ответ. Но как это сделать правильно-то есть тайна велика.
Курите документацию к сервису.

Добавлено через 8 минут
Глянул документацию, в принципе вроде все есть. Но протестировать мало у кого выйдет, покупать Крипто-ПРО вряд ли есть желание. Да и сертификаты там нужны, как я понял.
Если у вас все это в наличии-следуйте рекомендациям, должно получится.
1
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
16.06.2016, 20:37  [ТС] 11
insite2012, большое спасибо за помощь. Да крипто про и подписи в наличии.
Пойду разбираться.
Возможно у меня на разборы уйдет еще 2-3 дня. О попытках и результате отпишу, ведь тема будет интересна очень многим людям из государственной сферы.
0
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
16.06.2016, 20:40 12
Цитата Сообщение от KennyPanders Посмотреть сообщение
тема будет интересна очень многим людям из государственной сферы.
Не сомневаюсь в этом. Думаю, если разберетесь и выложите свои наработки, многие будут вам благодарны.
0
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
17.06.2016, 09:25  [ТС] 13
Да, нехватка образования сказывается ..
Насколько мне стало ясно задача состоит в том, чтобы по схеме Charge.xsd (схема начислений) построить XML документ и поместить ее в переменную request для отправки.
Документ сформировал, но как его теперь отправить? Хотябы намекните пожалуйста.
0
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
17.06.2016, 09:46 14
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Цитата Сообщение от KennyPanders Посмотреть сообщение
как его теперь отправить?
KennyPanders, да там, в общем, и метод сервиса всего один. Он принимает один параметр и возвращает сообщение. Вот примерно так, что подставлять в параметры я, естественно, знать не могу, к гос. службе не отношусь.)))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GisGmp.ServiceReference1;
 
namespace GisGmp {
    class Program {
        static void Main(string[] args) {
            MessageType messageType = new MessageType {
                Date=DateTime.Now
                //Тут далее заполняем свойства объекта
            };
 
            MessageDataType messageDataType = new MessageDataType {
                //Тут далее заполняем свойства объекта
            };
 
            //Формируем сообщение запроса
            BaseMessageType request = new BaseMessageType {
                Message=messageType,
                MessageData=messageDataType
            };
            using (SmevGISGMPServiceClient client = new SmevGISGMPServiceClient()) {
                BaseMessageType response = client.GISGMPTransferMsg(request);
            }
 
            Console.ReadLine();
        }
    }
}
Добавлено через 1 минуту
Цитата Сообщение от KennyPanders Посмотреть сообщение
построить XML документ
Никакой документ вам строить не надо. Вам просто нужно корректно заполнить объект и передать его, а потом дождаться ответа от сервиса.
2
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
17.06.2016, 13:10  [ТС] 15
insite2012, зачем же нам вообще нужны XSD схемы, представленные в изобилии на сайте?

Я не вижу соответствия между классами, предоставленными Референсом и элементами XSD схем.

Например, в схемах я вижу множество конструкций наподобии этой:
XML
1
2
3
4
5
<xsd:element name="KBK" type="com:KBKType">
                <xsd:annotation>
                    <xsd:documentation>КБК или код операции</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
Однако классы добавленные в Референс не позволяют мне обратиться к КВК. Такого поля нет ни в одном из классов.
Как же мне тогда его заполнить?

Извиняюсь, если спрашиваю банальности. Но уже часа 4 бьюсь об это непонимание. Если возможно об этом где то почитать, то направьте
1
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
17.06.2016, 15:09 16
Цитата Сообщение от KennyPanders Посмотреть сообщение
зачем же нам вообще нужны XSD схемы, представленные в изобилии на сайте?
Схемы - это отображение объектов .NET на язык WSDL.
Что касается непосредственно вопроса - как я понял, тот адрес сервиса что есть в первом посте не совсем точный. Должен быть и другой, почитайте тут, в самом вверху, как формируется адрес сервиса. Начальная часть мне неизвестна, к сожалению. Но раз вы с этим работаете, у вас должна быть более полная документация. А адрес в первом посте, как я понял - типа тестового.
Вот ссылка, вы же программист, в конце концов, вот и читайте руководство для программиста.
http://help.quorum.ru:8090/pages/viewpage.action?pageId=6491108

Добавлено через 1 минуту
Ну вот, вот и адреса)))
http://help.quorum.ru:8090/pages/viewpage.action?pageId=2031805

Добавлено через 8 минут
Проверил, на данный момент работают только тестовые адреса сервисов. Возможно, так и должно быть. Попробуйте написать в ТП.
Вот эти тестовые адреса рабочие.
http://smev-mvf.test.gosuslugi.ru:77...ID0003218/wsdl
http://smev-mvf.test.gosuslugi.ru:77...ID0003663/wsdl
0
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
17.06.2016, 15:24 17
И КБК там есть. По двум ссылкам все есть что надо.
0
Миниатюры
Как отправить XML через SOAP запрос (для работы ГИС ГМП)  
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
17.06.2016, 15:41  [ТС] 18
Я еще не совсем программист, а вся работа и знакомство с сервисом состоит в том, что спускают важное письмо с самого верха, в котором лишь написано "Сделать чтоб все работало к такому то числу." ТП обрабатывает запрос от 2 до 3 недель после чего отвечает что это не в их полномочиях. Никакой документации кроме общедоступной нету.

Сервис формата 1.15.0 (SID3218) только предоставляет эти классы, которые вы заскринили. Однако 1.16.2(SID3663) уже гораздо-гораздо скуднее. Тоже непонятка какая то.

Возвращаясь к теме XSD. Возможно ли его преобразовать XSD также в .net классы? Что бы с ним взаимодействовать хоть как то.
Прикладываю файл со схемами, по которым нужно составлять Начисления, Платежи итп.
0
Вложения
Тип файла: rar xsd схемы для ГИС ГМП.rar (37.4 Кб, 8 просмотров)
insite2012
Модератор
Эксперт .NET
4865 / 3818 / 1096
Регистрация: 12.10.2013
Сообщений: 11,095
Записей в блоге: 2
17.06.2016, 15:51 19
Цитата Сообщение от KennyPanders Посмотреть сообщение
Возвращаясь к теме XSD. Возможно ли его преобразовать XSD также в .net классы? Что бы с ним взаимодействовать хоть как то.
KennyPanders, создайте проект, и добавьте туда две ссылки на службы (по тем адресам, что я выше указал). И после этого в обозревателе объектов сможете увидеть все, что было сгенерировано Студией. Насколько я вижу, там очень много типов, и все что вам нужны там есть.
Ну а дальше читать документацию и экспериментировать. Много тут вам не поможешь, там же, как я говорил, нужны сертификаты и Крипто-Про, так что только сами.
0
KennyPanders
2 / 2 / 0
Регистрация: 21.11.2015
Сообщений: 75
22.06.2016, 13:22  [ТС] 20
Вообщем какие результаты у меня:
Из кода, приведенного выше insite2012 не могу никак заполнить свойство AppData класса MessageDataType.

AppData принимает и возвращает экземпляр класса XmlElement, в котором и содержится основная информация о начислении.
Как сформировать этот XmlElement мне на данный момент не понятно..
Инструкция гласит:
Описание сообщения запроса к веб-сервису приведено в Таблице № 16. «Структура сообщения запроса к веб-сервису». Сообщения запросов к ГИС ГМП передаются в структуре сообщения СМЭВ (см. Методические рекомендации версии 2.5.6) в элементе AppData. В данный элемент должен быть подставлен элемент RequestMessage, описанный в файле Message.xsd .
Смотрим этот файл:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
.....................
<xs:complexType name="RequestMessageType">
        <xs:sequence>
            <xs:element ref="msgd:RequestMessageData"/>
            <xs:element ref="ds:Signature" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>ЭП</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    
        <xs:attribute name="Id" use="required">
            <xs:annotation>
                <xs:documentation>Идентификатор сообщения</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:ID">
                    <xs:maxLength value="50"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="timestamp" type="xs:dateTime" use="required">
            <xs:annotation>
                <xs:documentation>Дата и время формирования сообщения</xs:documentation>
            </xs:annotation>
        </xs:attribute>
........итд................
........итд................
Получается мы должны создать XML документ, свалидированный по этой схеме с заполнением всех элементов нужными для отправки значениями.
И уже затем из этого хмл-документа взять экземпляр XmlElement, который мы поместим в AppData.
С этим трудности. Чем больше читаю интернет, тем больше путаюсь.
Если есть, поделитесь пожалуйста рабочим куском кода.
Спасибо
0
22.06.2016, 13:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2016, 13:22

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ
Здравствуйте! Передо мной стоит задача интеграции с системой ГИС ЖКХ...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4)
Предыдущая тема: http://www.cyberforum.ru/web-services-wcf/thread1800721.html ...

.NET 4.x Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (2)
Начало темы здесь: http://www.cyberforum.ru/web-services-wcf/thread1615223.html...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru