Delphi Win32从ASP.NET服务接收数据表

时间:2011-11-04 07:36:43

标签: delphi soap

我正在构建一个应该使用Soap服务的Delphi Win32应用程序,它最终成为一个基于.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 个答案:

答案 0 :(得分:3)

您可以从xml构建数据集。这应该为您提供一个起点:http://www.gekko-software.nl/DotNet/Art07.htmhttp://www.gekko-software.nl/DotNet/Art08.htm

我没有使用过RemObjects的DataAbstract,所以我无法给出建议。

LE:您可以按照drbob编写的这篇简单文章访问和使用.net编写的Web服务 - Consuming C# Web Services with Delphi 7 Professional

其中还包含一个关于如何动态构建以及如何使用THttpRio的小例子(与Mikael Eriksson的答案相同)

答案 1 :(得分:1)

  

我能用它做任何事吗?我很乐意手动解析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;