powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема интеграции с SOAP-сервисом, написанном на Delphi7
3 сообщений из 3, страница 1 из 1
Проблема интеграции с SOAP-сервисом, написанном на Delphi7
    #38816988
nor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nor
Гость
Здравствуйте!

Есть задача по интеграции со сторонней системой через их SOAP-сервис, написанный на Delphi7...
Итак, стандартными средствами подключаю Web Service.
Всё отлично, подтягивается wsdl, проект строится.

Но, при вызове одного из методов сервиса, вылетает Exception:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
System.InvalidOperationException was caught
  Message=В документе XML (2, 1128) присутствует ошибка.
  Source=System.Xml
  StackTrace:
       в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
       в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
       в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
       в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
       в ISTicketTest.ISTicketService.ISTicketservice.ViewEventsForPasses(String Login, String Password) в C:\Test\ISTicketTest\ISTicketTest\Web References\ISTicketService\Reference.cs:строка 1121
       в ISTicketTest.Form1.button1_Click(Object sender, EventArgs e) в C:\Test\ISTicketTest\ISTicketTest\Form1.cs:строка 29
  InnerException: System.InvalidOperationException
       Message=Элемент, на который задана ссылка, с ID "2" в данном документе не найден. <= Суть ошибки
       Source=System.Xml
       StackTrace:
            в System.Xml.Serialization.XmlSerializationReader.GetTarget(String id)
            в System.Xml.Serialization.XmlSerializationReader.FixupArrayRefs(Object fixup)
            в System.Xml.Serialization.XmlSerializationReader.DoFixups()
            в System.Xml.Serialization.XmlSerializationReader.ReadReferencedElements()
            в Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderISTicketservice.Read63_ViewEventsForPassesResponse()
            в Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer100.Deserialize(XmlSerializationReader reader)
            в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)



Посмотрел запрос-ответ через wireshark.

Запрос:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://tempuri.org/"
xmlns:types="http://tempuri.org/encodedTypes"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
     <q1:ViewEventsForPasses xmlns:q1="urn:STicketIntf-ISTicket">
       <Login xsi:type="xsd:string">***</Login>
       <Password xsi:type="xsd:string">***</Password>
     </q1:ViewEventsForPasses>
   </soap:Body>
</soap:Envelope>



Ответ:
Код: 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.
29.
30.
<?xml version="1.0"?>
<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"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body
SOAP-ENC:encodingStyle="http://schemas.xmlsoap.org/soap/envelope/">
     <NS1:ViewEventsForPassesResponse
xmlns:NS1="urn:STicketIntf-ISTicket" xmlns:NS2="urn:STicketIntf">
       <NS2:TViewEventsForPassesAnswer id="1"
xsi:type="NS2:TViewEventsForPassesAnswer">
         <ErrorCode xsi:type="xsd:int">0</ErrorCode>
         <ErrorMessage xsi:type="xsd:string"></ErrorMessage>
         <ViewEventsForPassesItem xsi:type="SOAP-ENC:Array"
SOAP-ENC:arrayType="NS2:TViewEventsForPassesItem[1]">
               <item href="#2"/>
         </ViewEventsForPassesItem>
       </NS2:TViewEventsForPassesAnswer>
       <NS2:TViewEventsForPassesItem id="2"
xsi:type="NS2:TViewEventsForPassesItem">
         <eventId xsi:type="xsd:int">73</eventId>
         <eventName xsi:type="xsd:string"> " "</eventName>
         <showDateTime
xsi:type="xsd:dateTime">2014-11-28T19:00:00.000Z</showDateTime>
       </NS2:TViewEventsForPassesItem>
       <return href="#1"/>
     </NS1:ViewEventsForPassesResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>



Иными словами не получается распарсить массив структур - не находит элемент массива с ID "2":
"Элемент, на который задана ссылка, с ID "2" в данном документе не найден."

Элемент на который ссылается массив, всё же имеется в ответе, но возможно, парсеру "не нравится" его расположение?
Помогите пожалуйста разобраться, заранее спасибо!

PS: Как было сказано разработчиками сервиса, они используют SOAP 1.0 и методы шлюза протестированы с помощью ответной части написанной на PHP.
...
Рейтинг: 0 / 0
Проблема интеграции с SOAP-сервисом, написанном на Delphi7
    #38818278
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nor,
авторИтак, стандартными средствами подключаю Web Service
wsdl.exe или svcutil.exe ?
...
Рейтинг: 0 / 0
Проблема интеграции с SOAP-сервисом, написанном на Delphi7
    #38819135
nor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nor
Гость
PA, в выпадающей менюшке проекта Add Service Reference => Add Web Service. Как я понял используется wsdl.exe.

Решение проблемы нашёл. Описано здесь: http://www.codeproject.com/Tips/205815/Net-SOAP-web-service-client-and-Borland-SOAP-serve.
Помогло :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Проблема интеграции с SOAP-сервисом, написанном на Delphi7
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]