说明:本文经过一些改动,纠正了一些问题,因为原文无法修改,只好重发。
不久前我收到几位朋友发来Mail说明他们在按照本文所述进行WebService应用开发时碰到的一个问题:在用ISAPI方式编写本文例子程序时发生AV错误。根据改进后的本例子程序修改了本文,请注意文中加粗部分内容。
--2002-8-17
本文将做一个略复杂的例子,实现通过 SOAP 传递自定义的数据类型。本例子的功能是在服务端通过 ADO 的数据访问控件取得数据表内容,然后将其通过 SOAP 传递到客户端再显示。
服务端:
1.New|WebServices|Soap Server Application ,如下图,与 Delphi 6 + Update 2 相比,除了左上角的图标以外,完全相同:

选 Web App Debugger executeable 类型, CoClass Name 为:wadSoapDemo2 ,如下图:

确定后将自动提示是否要新建一个接口,如下图,确定即可打开新建接口向导,如果要以后再增加接口,可以在 New|WebServices 中选择 SOAP Server Interface 同样可打开新建接口向导:

2.新建接口向导如下图,输入接口名:DataTable 即可生成一个 SOAP 服务端接口:

关于此向导的其它说明见《C++ Builder 6 BizSnap/SOAP/WebService(1) -- 一个 Hello world! 的例子》(以下简称《(1)》);
3.(注意:原文的这部分有错,现在为修改后的)新建一个 DataModule ,放入四个数据库控件: ADOConnection1, ADODataSet1, DataSetProvider1, ClientDataSet1 ,其各属性设置如下表:
ADOConnection1 | ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=raptor/neutrino" |