Автор |
Сообщение |
|
Планируем под каждый запрос строить отдельный справочник.
мы страны используем в качестве первоначального самого простого тестового запроса работы сервиса.
Таже ошибка у нас возникла при запросе GetDocumentChangesList
|
|
|
С переходом на 2 версию, похоже опять что=то сломалось. Запросы к IkarService возвращаются с ошибкой "'BEA-382513: OSB Replace action failed updating variable "body": Error parsing XML: {err}FORG0005: expected exactly one item, got 0 items'"
адрес сервиса http://api.vetrf.ru/schema/platform/services/2.0-RC-last/IkarService_v2.0_pilot.wsdl
Формируемый запрос:
'<?xml version="1.0"?>'#$D#$A'<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><GetAllCountryList xmlns="http://api.vetrf.ru/schema/cdm/registry/ikar/service/v2"><bs:listOptions xmlns:bs="http://api.vetrf.ru/schema/cdm/registry/ikar/service/v2"><count xmlns="http://api.vetrf.ru/schema/cdm/base">100</count><offset xmlns="http://api.vetrf.ru/schema/cdm/base">0</offset></bs:listOptions></GetAllCountryList></SOAP-ENV:Body></SOAP-ENV:Envelope>'#$D#$A
прошу подсказать пример рабочего SOAP запроса для метода getAllCountryListReques
|
|
|
есть проблема с описанием WSDL сервиса ИКАР по ссылке http://api.vetrf.ru/schema/platform/ikar/services/IkarService_v1.4_pilot.wsdl
возможно из-за следующего:
для процедуры GetAllCountryList описание входящего параметра объявлено как getAllCountryListRequest
----------------------------------
<WL5G3N0:message name="GetAllCountryList">
<WL5G3N0:part element="WL5G3N5:getAllCountryListRequest" name="request"/>
</WL5G3N0:message>
----------------------------------
а в процедуре как allCountryList
---------------------------------------------------------------------------
<WL5G3N0:portType name="IkarServicePortType">
<WL5G3N0:operation name="GetAllCountryList">
<WL5G3N0:input message="WL5G3N7:GetAllCountryList" name="allCountryList">
</WL5G3N0:input>
<WL5G3N0:output message="WL5G3N7:GetAllCountryListResponse" name="allCountryListResponse">
</WL5G3N0:output>
<WL5G3N0:fault message="WL5G3N7:InternalServiceFault" name="internalServiceFault">
<WL5G3N0:documentation>Внутренняя ошибка выполнения операции на
сервере.
</WL5G3N0:documentation>
</WL5G3N0:fault>
<WL5G3N0:fault message="WL5G3N7:IncorrectRequestFault" name="incorrectRequestFault">
<WL5G3N0:documentation>Реакция системы на некорректный запрос.
</WL5G3N0:documentation>
</WL5G3N0:fault>
<WL5G3N0:fault message="WL5G3N7:OffsetOutOfRangeFault" name="offsetOutOfRangeFault">
<WL5G3N0:documentation>Отступ в параметрах запроса превышает число
записей удовлетворяющих условиям запроса.
</WL5G3N0:documentation>
</WL5G3N0:fault>
</WL5G3N0:operation>
---------------------------------------------------------------------------
предполагаю, что при формировании SOAP запроса тег трансформируется в <GetAllCountryList xmlns="http://api.vetrf.ru/schema/cdm/registry/service">
по факту запрос должен быть таким (давался тех.поддержкой) во втором сообщении этой темы:
======================================================
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://api.vetrf.ru/schema/cdm/ikar/ws-definitions" xmlns:base="http://api.vetrf.ru/schema/cdm/base">
<soapenv:Header/>
<soapenv:Body>
<ws:getAllCountryListRequest>
<!--Optional:-->
<base:listOptions>
<!--Optional:-->
<base:count>1000</base:count>
<!--Optional:-->
<base:offset>0</base:offset>
</base:listOptions>
</ws:getAllCountryListRequest>
</soapenv:Body>
</soapenv:Envelope>
=====================================================
пока возможна только подмена запроса перед отправкой в SOAP сервис
так же есть проблемы с описанием следующих процедур (во всех случаях не найдено описание входящего параметра) сервиса ИКАР, из-за чего они не загружаются
GetCountryByGuid
GetCountryByUuid
GetCountryChangesList
GetRegionListByCountry
GetRegionByGuid
GetRegionByUuid
GetRegionChangesList
GetDistrictListByRegion
GetDistrictByGuid
GetDistrictChangesList
GetLocalityListByRegion
GetLocalityListByDistrict
GetLocalityListByLocality
GetStreetListByLocality
FindLocalityListByName
FindStreetListByName
|
|
|
Спасибо большое за помощь.
Ошибка возникает на уровне импорта WSDL для IKAR.
Для интеграции используется Borland® Delphi® 2006 Version 10.0.2558.35231 Update 2
пока разобраться в чем именно причина не получилось. как только будет конкретное решение, отпишусь сюда.
|
|
|
нет это не влияет. для чистоты эксперимента сделал запрос строго по вашему примеру
|
|
|
это не ограничение нашей программы, трассировщик стоит между нами.
при этом проверил на другой процедуре, а именно "https://api2.vetrf.ru:8002/platform/services//getUnitListRequest" - на ней все работает корректно
похоже, что на стороне сервиса в процедуре формирования ответа по запросу "https://api2.vetrf.ru:8002/platform/ikar/services/IkarService/getAllCountryListRequest" стоят константы и игнорируются значения count и offset из запроса.
|
|
|
протестировал ошибку с трассировщиком траффика, ошибка присутствует.
прошу посмотреть на приложенные файлы.
проверял в трех вариантах запрос с различными значениями count и offset
во всех случаях возвращает один и тот же ответ с данными "count=100 offset=0 total=251."
|
|
|
При внедрении вылезла возможная ошибка, просьба проверить.
на тестовой версии обмена через сервис https://api2.vetrf.ru:8002/platform/ikar/services/IkarService (версия АПИ 1.4)
при запросе метода GetAllCountryList вне зависимости от указнных значений "count" и "offset" всегда возвращаются первые сто записей из возможных total=251.
|
|
|
|
|