DELPHI, WebService (SOAP) не может заставить его получать данные - PullRequest
0 голосов
/ 22 октября 2018

Я скачал схему для этого веб-сервиса и затем использовал RestDebugger для создания необходимых файлов pascal.Ответ от веб-сервиса содержит схему и часть «diffgram».Дифграмма и схема содержатся в разделе, который называется, но исходный код, созданный RestDebugger, не содержал раздел "diffgram".Мне пришлось добавить это в файл pascal вручную.

Хорошо, пока все хорошо, но когда я попытался получить данные из этой части, у меня не получилось.Я использовал XML Mapper для создания файла преобразования, который будет использоваться с компонентом TXMLTransform.Я подключил этот компонент к TDataset и TDBGrid, но я получаю только заголовки столбцов, но без данных.

код для этого выглядит следующим образом:

 XMLTransform1.SourceXMLFile := 'xml1.xml';
 ClientDataSet1.XMLData := XMLTransform1.Data;
 ClientDataSet1.Active := true;

Файл преобразования настроен всвойство компонентов: TransformationFile: "Test.xtr"

Не имеет значения, что содержит файл данных, если он является действительным xml.В результате получается сетка, в которой отображаются все столбцы с правильными заголовками, но без данных.

Я прочитал много документации по этому вопросу, но не смог найти ни одного документа, который помог бы мне с моей проблемой.Я не уверен, какой документ мне следует включить сюда, там много текста, но я уверен, что это должно быть что-то очень фундаментальное, что я упускаю, поэтому мне кажется, что достаточно простой, но полной инструкции / образца.,В противном случае я думаю, что мне нужно создать свою собственную функцию синтаксического анализа, которая, по крайней мере, работает над этим конкретным проектом.Но это кажется тяжелым.

Короткий ответ:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <GetDataBySecureResponse xmlns="https://xxxxx.getdata/">
         <GetDataBySecureResult>
            <SearchNumber>674564784</SearchNumber>
            <TransactionId>1199</TransactionId>
            <Block_Name>BSDA_C_BASIC</Block_Name>
            <Parameters>
               <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
               <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
                  <NewDataSet xmlns="">
                     <GETDATA_RESPONSE diffgr:id="GETDATA_RESPONSE1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
                        <ORGNR>674564784</ORGNR>
                        <NAME>NICE NAME</NAME>
                  </NewDataSet>
               </diffgr:diffgram>
            </Parameters>
         </GetDataBySecureResult>
      </GetDataBySecureResponse>
   </soap:Body>
</soap:Envelope>

В этом простом примере я получу сетку, заполненную двумя столбцами, "ORGNR" и "NAME", но без строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...