Delphi SOAP странный тег - PullRequest
       1

Delphi SOAP странный тег

1 голос
/ 29 ноября 2011

У меня есть этот интерфейс в проекте сервера Delphi XE SOAP:

type TRequest=class(tremotable)
...
type tCollection=class(tremotable)
...

imyintf = interface(IInvokable)
        ['{929F54BA-50C1-47A7-91F8-3EC61931F80E}']
        function GetSomething(const params:TRequest)
                  : tCollection; stdcall;
      end;

Все поля имеют индекс IS_REF = $ 0080. Инициализация выглядит так:

  InvRegistry.RegisterInterface(TypeInfo(imyintf),'ns');
  InvRegistry.RegisterInvokeOptions(TypeInfo(imyintf), ioDocument);
  InvRegistry.RegisterInvokeOptions(TypeInfo(imyintf), ioLiteral);
  RemClassRegistry.RegisterXSClass(TRequest,'Request','Request');
  RemClassRegistry.RegisterXSClass(tCollection,'Collection','Collection');

Генерируемый запрос SOAPUI выглядит так:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="ns" xmlns:ns2="http://www.regionh.dk/regionh.dk/cis/xml.schema/" xmlns:urn="urn:Intf-icis2opus" xmlns="http://www.regionh.dk/regionh.dk/xml.schema/" xmlns:ns3="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:Request soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <params xsi:type="get:Request" xmlns:get="Request" xmlns="">
...
         </params>
      </ns:Request>
   </soapenv:Body>
</soapenv:Envelope>

Но клиент хочет отправить XML-запрос без тега. Params - это имя входного параметра в моей функции. Если я отправлю, как он хочет, у меня будет ноль в объекте запроса. Что я должен изменить, чтобы приложение работало без этого тега?

=============================

Решено. Я поставил все поля из запроса «param» входным параметром в функцию. Как это:

function GetSomething(const ...<there are variables from "Trequest" object>...)
              : TCollection;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...