Показать сообщение отдельно
  #1  
Старый 12.05.2013, 09:31
sagitt sagitt вне форума
Прохожий
 
Регистрация: 15.11.2009
Сообщения: 2
Репутация: 10
По умолчанию SOAP запрос с массивом в качестве параметра

Есть Web- сервис, к которому мне надо обратиться из Delphi.
WSDL : http://helpa.pro/api/integration.php?wsdl

Описание методов сервиса http://zaptrade.ru/integration/

Я загрузил WSDL в проект, получил описание, в котором все параметры описывались как «Arry» т.к в Delphi такого типа нет, то заменил все на «array of Variant»:

Код:
  arra=array of Variant;

  IntegrationPort = interface(IInvokable)
  ['{1D2F546A-B952-7430-4276-2E316BE257F8}']
    function  getStatusHistory(const request: Arra): WideString; stdcall;
    function  getPaymentOperationHistory(const request: Arra): WideString; stdcall;
    function  getOrder(const request: arra): WideString; stdcall;
    function  getOrderItems(const request: Arra): WideString; stdcall;
    function  getUser(const request: Arra): WideString; stdcall;
    function  getUserBalance(const request: Arra): WideString; stdcall;
    function  getAllOrderStatuses(const request: Arra): WideString; stdcall;
    function  addPayment(const request: Arra): WideString; stdcall;
  end;

Для обрашения к сервису пишу :
Код:
arr1:=vararraycreate([0, 1], varVariant);
arr1[0]:='Пароль';
 str:=(htpr1 as IntegrationPort).getOrder(arr1);
Получаю ответ от сервера :
<error>Неверный пароль</error>

Подскажите, как правильно передать параметры при вызыве таких фукций.
Ответить с цитированием