Delphi SOAP Запрос - PullRequest
       2

Delphi SOAP Запрос

0 голосов
/ 04 сентября 2018

Я пытаюсь отправить SOAP-запрос на веб-сервис в Delphi XE5. На самом деле есть WSDL, который я импортировал через WSDL Importer. Я установил соединение с этим веб-сервисом с помощью компонентов THTTPRIO (rio) и IdEncoderMIME1 для запроса аутентификации HTTP.

Запрос SOAP был построен с помощью TXMLDocument и имеет следующую структуру:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cod=NS_Codelist>
   <soapenv:Header/>
   <soapenv:Body>
      <cod:GetLatestChangeDatesRequest>
         <!--Zero or more repetitions:-->
         <CodeListID>1035</CodeListID>
      </cod:GetLatestChangeDatesRequest>
   </soapenv:Body>
</soapenv:Envelope>

Кроме того, я получил тип порта веб-службы.

codeserv:= GetCodeListPortType(true,'',rio);

Это методы из WSDL:

codeserv.GetLatestChangeDates(const body:GetLatestChangeDatesRequestType):GetLatestChangeDatesResponseType

GetLatestChangeDatesRequestType = array of Int64;  
GetLatestChangeDatesRequest = GetLatestChangeDatesRequestType;

GetLatestChangeDatesResponseType = array of CodeListLatestChangeDateType;   
GetLatestChangeDatesResponse = GetLatestChangeDatesResponseType;

CodeListLatestChangeDateType 
property CodeListID: Int64
property LatestChangeDate: TXSDate

Я уже пытался установить массив Int64 для параметра, но затем он говорит «элемент CodeListID отсутствует».

К сожалению, я не нашел способа отправить этот XML-запрос SOAP в веб-службу и получить ответ. Есть идеи?

РЕДАКТИРОВАТЬ: я пытался использовать методы WSDL

var
    codeserv: CodeListPortType;
    arrIDs: GetLatestChangeDatesRequest;
    response: GetLatestChangeDatesResponse;

   begin
    codeserv:= GetCodeListPortType(true,'',rio);
    SetLength(arrIDs,1);
    arrIDs[0]:= 1035;
    response:= codeserv.GetLatestChangeDates(arrIDs);

Но затем я получаю следующее сообщение об ошибке: «Обнаружено недопустимое содержимое, начиная с элемента« long ». Ожидается один из {{CodeListID} '.' В SOAP-запросе должен присутствовать элемент CodeListID. К сожалению, похоже, что метод GetLatestChangeDates не создает элементы в запросе SOAP. Отправленный выше SOAP-запрос должен был быть создан с помощью этого метода (надеюсь).

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