powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема интеграции с SOAP-сервисом, написанном на Delphi7
1 сообщений из 1, страница 1 из 1
Проблема интеграции с SOAP-сервисом, написанном на Delphi7
    #38816513
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
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблема интеграции с SOAP-сервисом, написанном на Delphi7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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