Delphi Win32 Получение данных из службы ASP.NET - PullRequest
6 голосов
/ 04 ноября 2011

Я создаю приложение Delphi Win32, которое должно использовать Soap Service, которое оказывается приложением на основе .NET. Одна функция возвращает DataTable. Конечно, Delphi Win32 (не Delphi .NET) не имеет возможности понять это изначально.

Как я могу заставить это работать? Я тоже буду рад разобрать XML вручную, но не знаю, как получить необработанный XML-ответ.

WSDL: https://stratus.voxamvia.co.za/api.asmx?WSDL

Функция: GetNotifications, которая возвращает GetNotificationsResult, которая строится как:

  GetNotificationsResult = class(TRemotable)
  private
    Fnamespace: WideString;
    Fnamespace_Specified: boolean;
    FtableTypeName: WideString;
    FtableTypeName_Specified: boolean;
    procedure Setnamespace(Index: Integer; const AWideString: WideString);
    function  namespace_Specified(Index: Integer): boolean;
    procedure SettableTypeName(Index: Integer; const AWideString: WideString);
    function  tableTypeName_Specified(Index: Integer): boolean;
  published
    property namespace:     WideString  Index (IS_ATTR or IS_OPTN) read Fnamespace write Setnamespace stored namespace_Specified;
    property tableTypeName: WideString  Index (IS_ATTR or IS_OPTN) read FtableTypeName write SettableTypeName stored tableTypeName_Specified;
  end;

Любая помощь приветствуется!

Поможет ли мне реализовать RemObjects?

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

Вы можете создать свой набор данных из XML. Это должно дать вам отправную точку: http://www.gekko -software.nl / DotNet / Art07.htm и http://www.gekko -software.nl / DotNet / Art08.htm .

Я не использовал DataAbstract от RemObjects, поэтому не могу дать совет по этому поводу.

LE: вы можете получить доступ и использовать веб-сервис, написанный на .net, следуя этой простой статье, хорошо написанной drbob - Использование веб-сервисов C # с Delphi 7 Professional

, который также содержит небольшой пример того, как динамически строить и как использовать THttpRio (совпадает с ответом Микаэля Эрикссона)

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

Как я могу заставить это работать? Я буду рад разобрать XML вручную тоже, но я не знаю, как получить необработанный XML-ответ.

Вы можете получить его в OnAfterExecuteEvent вашего THTTPRIO компонента. Там у вас будет SOAPResponse: TStream в качестве параметра.

Обновление:

Чтобы запустить событие, добавьте компонент THTTPRIO, создайте обработчик событий и используйте компонент RIO в качестве третьего параметра для GetAPISoap.

Это сработало для меня. HTTPRIO1 является компонентом в форме.

procedure TForm7.Button1Click(Sender: TObject);
var
  A: APISoap;
begin
  A := GetAPISoap(False, '', HTTPRIO1);
  A.Validate_User('', '');
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...