Автор |
Сообщение |
11/10/2017 12:03:15
|
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?
|
|
|
11/10/2017 12:55:17
|
Владимир Игнатов
Зарегистрирован: 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
|
|
|
11/10/2017 13:47:24
|
Jupiter
Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн
|
Владимир Игнатов wrote:Найдите в файле ...\studio\xxx\source\soap\Soap.Rio.pas (это в исходниках самого Delphi)
добавьте в var
и далее
приведите блок кода (найдете по комментариям) к виду
В результате там же, где .exe при работе будут писаться запросы-ответы через soap. Но в один и тот же файл, разумеется.
Пересоберите проект (Shift-F9)
Сделал все так же, но ничего не поменялось. Поставил точку останова в место, где должен записываться запрос в файл - программа туда даже не заходит.
Может, я не те методы использую или использую их неправильно?
|
|
|
11/10/2017 13:50:04
|
Владимир Игнатов
Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн
|
Профиль сборки - Debug?
Еще нужно этот файл (Soap.Rio.pas) добавить в проект, тогда его пересоберет компилятор.
|
|
|
11/10/2017 14:05:40
|
Jupiter
Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн
|
Спасибо, после добавления Soap.Rio.pas в проект запросы стали записываться в файлы.
То есть теперь нужно парсить xml-файлы? Нет ли возможности получать результаты через методы, которые встроены в wsdl?
Как отправить запрос, например, getVetDocumentListRequest, через submitApplicationRequest? Неужели с помощью xml-файла?
|
|
|
11/10/2017 14:25:48
|
Владимир Игнатов
Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн
|
Теперь можно посмотреть, что отправляется, а что принимается. Это сильно помогает.
Результат, разумеется, можно принимать через объект, созданный из wsdl. А анализ принятого xml помогает понять, в каком месте объекта искать ответ.
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 11/10/2017 14:27:41
|
|
|
11/10/2017 15:05:38
|
Jupiter
Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн
|
Владимир Игнатов wrote:
Результат, разумеется, можно принимать через объект, созданный из wsdl.
Не могли бы дать хоть какой-нибудь пример?
|
|
|
11/10/2017 15:12:40
|
Владимир Игнатов
Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн
|
Jupiter wrote:Не могли бы дать хоть какой-нибудь пример?
Живого примера, который не стыдно показать народу не имею.
Что в ответе, который confirmed?
Вот прямо rio_resp.txt
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 11/10/2017 15:13:12
|
|
|
11/10/2017 15:20:09
|
Jupiter
Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн
|
Владимир Игнатов wrote:
Jupiter wrote:Не могли бы дать хоть какой-нибудь пример?
Живого примера, который не стыдно показать народу не имею.
Что в ответе, который confirmed?
В ответе <status>COMPLETED</status>
А дальше перечисление записей - все точно так же, как и в SoapUI по тому же запросу
|
|
|
11/10/2017 15:26:12
|
Владимир Игнатов
Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн
|
http://vetrf.ru/vetrf-forum/posts/list/7130.page#44785 - сделано?
|
|
|
11/10/2017 15:30:29
|
Jupiter
Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн
|
Владимир Игнатов wrote:http://vetrf.ru/vetrf-forum/posts/list/7130.page#44785 - сделано?
Не сделано. Подскажите, пожалуйста, где должен находиться этот application_v1.1.xsd и что делать после его изменения
|
|
|
11/10/2017 15:32:43
|
Владимир Игнатов
Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн
|
Тащим wsdl и все прилежащие xsd себе на диск, делаем изменения, заново делаем import WSDL из файлов, а не с URL.
Внимательно смотрим комментарии где-то в начале файла pas, чтобы там не было "не импортировано, т.к. нет такого файла", что означает, что не все xsd скачаны.
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 11/10/2017 15:34:02
|
|
|
11/10/2017 17:23:35
|
Jupiter
Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн
|
Изменил application_v1.1.xsd, сделал импорт wsdl в проект - мало что поменялось, запрос по-прежнему возвращает пустые данные, хотя в rio_resp.txt записывается все как надо.
Как отправить запрос в Delphi и получить ответ?
|
|
|
11/10/2017 17:50:24
|
Владимир Игнатов
Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн
|
Не там ищете ответ?
В response должен быть responseWrapper, а в нем - куча возможных возвращаемых объектов. Какой-то из них - Ваш.
|
|
|
11/10/2017 18:07:33
|
Jupiter
Зарегистрирован: 24/09/2017 19:02:23
Сообщений: 100
Оффлайн
|
Владимир Игнатов wrote:Не там ищете ответ?
В response должен быть responseWrapper, а в нем - куча возможных возвращаемых объектов. Какой-то из них - Ваш.
Так и есть, и в нем нет данных
|
|
|
|