|
[Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Прошу помощи. Интреграция базы MSSQL и Меркурий через шлюз на Delphi  XML
Индекс форума » Компонент МЕРКУРИЙ
Автор Сообщение
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Использую http://api.vetrf.ru/schema/platform/services/2.0-RC-last/ams-mercury-g2b.service_v2.0_pilot.wsdl
В SoapUI через submitApplicationRequest выполняю запрос, получаю applicationId.
Этот applicationId затем использую в программе:
var
clnt: ApplicationManagementService_v1.ApplicationManagementServicePortType;
Req: ApplicationManagementService_v1.receiveApplicationResultRequest;
Res: ApplicationManagementService_v1.receiveApplicationResultResponse;

begin
...
clnt:=ApplicationManagementService_v1.GetApplicationManagementServicePortType(True, '', rio);

Req:=ApplicationManagementService_v1.receiveApplicationResultRequest.Create;
Req.apiKey:=apiKey;
Req.issuerId:=issuerId;
Req.applicationId:=applicationId;
Res:=clnt.receiveApplicationResult(Req);

end;

Запрос выполняется со статусом CONFIRMED, но возвращает пустые данные, хотя в SoapUI через receiveApplicationResultRequest с тем же самым applicationId результат запроса содержит список данных.
Подскажите, пожалуйста, как правильно использовать функции submitApplicationRequest и receiveApplicationResultRequest и как через них вызывать методы, например, getVetDocumentListRequest?

Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Найдите в файле ...\studio\xxx\source\soap\Soap.Rio.pas (это в исходниках самого Delphi)



добавьте в var


и далее

приведите блок кода (найдете по комментариям) к виду


В результате там же, где .exe при работе будут писаться запросы-ответы через soap. Но в один и тот же файл, разумеется.
Пересоберите проект (Shift-F9)

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 11/10/2017 12:58:45

Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:Найдите в файле ...\studio\xxx\source\soap\Soap.Rio.pas (это в исходниках самого Delphi)



добавьте в var


и далее

приведите блок кода (найдете по комментариям) к виду


В результате там же, где .exe при работе будут писаться запросы-ответы через soap. Но в один и тот же файл, разумеется.
Пересоберите проект (Shift-F9)


Сделал все так же, но ничего не поменялось. Поставил точку останова в место, где должен записываться запрос в файл - программа туда даже не заходит.
Может, я не те методы использую или использую их неправильно?
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Профиль сборки - Debug?
Еще нужно этот файл (Soap.Rio.pas) добавить в проект, тогда его пересоберет компилятор.
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Спасибо, после добавления Soap.Rio.pas в проект запросы стали записываться в файлы.
То есть теперь нужно парсить xml-файлы? Нет ли возможности получать результаты через методы, которые встроены в wsdl?
Как отправить запрос, например, getVetDocumentListRequest, через submitApplicationRequest? Неужели с помощью xml-файла?
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Теперь можно посмотреть, что отправляется, а что принимается. Это сильно помогает.
Результат, разумеется, можно принимать через объект, созданный из wsdl. А анализ принятого xml помогает понять, в каком месте объекта искать ответ.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 11/10/2017 14:27:41

Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:
Результат, разумеется, можно принимать через объект, созданный из wsdl.

Не могли бы дать хоть какой-нибудь пример?
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Jupiter wrote:Не могли бы дать хоть какой-нибудь пример?

Живого примера, который не стыдно показать народу не имею.
Что в ответе, который confirmed?
Вот прямо rio_resp.txt

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 11/10/2017 15:13:12

Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:
Jupiter wrote:Не могли бы дать хоть какой-нибудь пример?

Живого примера, который не стыдно показать народу не имею.
Что в ответе, который confirmed?


В ответе <status>COMPLETED</status>
А дальше перечисление записей - все точно так же, как и в SoapUI по тому же запросу
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

http://vetrf.ru/vetrf-forum/posts/list/7130.page#44785 - сделано?
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:http://vetrf.ru/vetrf-forum/posts/list/7130.page#44785 - сделано?

Не сделано. Подскажите, пожалуйста, где должен находиться этот application_v1.1.xsd и что делать после его изменения
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Тащим wsdl и все прилежащие xsd себе на диск, делаем изменения, заново делаем import WSDL из файлов, а не с URL.
Внимательно смотрим комментарии где-то в начале файла pas, чтобы там не было "не импортировано, т.к. нет такого файла", что означает, что не все xsd скачаны.

Это сообщение было редактировано 1 раз. Последнее обновление произошло в 11/10/2017 15:34:02

Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Изменил application_v1.1.xsd, сделал импорт wsdl в проект - мало что поменялось, запрос по-прежнему возвращает пустые данные, хотя в rio_resp.txt записывается все как надо.
Как отправить запрос в Delphi и получить ответ?
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Не там ищете ответ?
В response должен быть responseWrapper, а в нем - куча возможных возвращаемых объектов. Какой-то из них - Ваш.
Jupiter


Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн

Владимир Игнатов wrote:Не там ищете ответ?
В response должен быть responseWrapper, а в нем - куча возможных возвращаемых объектов. Какой-то из них - Ваш.


Так и есть, и в нем нет данных
 
Индекс форума » Компонент МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team