|
[Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
Сообщения, отправленные пользователем: tiger
Индекс форума » Профиль для tiger » Сообщения, отправленные пользователем tiger
Автор Сообщение
Планируем под каждый запрос строить отдельный справочник.
мы страны используем в качестве первоначального самого простого тестового запроса работы сервиса.
Таже ошибка у нас возникла при запросе 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.

 
Индекс форума » Профиль для tiger » Сообщения, отправленные пользователем tiger
Перейти:   

Powered by JForum 2.1.8 © JForum Team