一编写服务程序 第一步:File----->New----->Other------>WebServices----->Soap Server Application 选择ISAPI/NSAPI Dynamic Link Library然后确定。生成一个框架。后面的大部分原代码都需要自己手工添加 第二步:定义一个接口单元。先通过向导生成一个空的单元文件,然后在此单元中实现基本的接口(Iinvokable)和定义以后客户端程序可以调用的方法,原代码如下: unit unit1; initialization//初始化 第三步:实现第二步中所定义的接口和方法。先通过向导生成一个空的单元文件,然后定义自定义接口(IWebtest)的实现类。原代码如下: unit Unit2; interface { Test } 第四步:编译整个应用程序,即产生一个*.dll的程序,把此程序拷贝到IIS的Cgi-bin目录下(或者其他可执行的目录,要根据自己的目录来选择),然后即可通过以下方式的链接访问到Wsdl:http://192.168.1.222/cgi-bin/*.dll/wsdl访问到以XML方式编码的Wsdl文件了,这就是客户端程序调用需要的文件。其中*.dll为你自己的应用程序的名字。192.168.1.222为你的Web服务器地址。Cgi-bin为你的Web服务器的可以执行Cgi程序的目录名称。
二编写客户程序: 第一步:新建一个Application。 第二步:File----->New----->Other------>WebServices----->Soap Services Importer 然后在Wsdl or Xml Schema Location中填入:http://192.168.1.222/cgi-bin/*.dll/wsdl/IWebTest,然后确定即生成了一个新的接口定义单元。 第二步:在主form上放上一个按钮和一个Httprio组件(在WebServices页上),并引用第二个单元(即通过Soap Services Importer自动生成的单元) 在Httprio的属性页上的WsdlLocation里面填上http://192.168.1.222/cgi-bin/*.dll/wsdl/IWebTest;然后在Httprio属性页上的Port和Service上选择上相应的数据即可。 第三步:书写客户调用程序,原代码如下: procedure TForm1.Button1Click(Sender: TObject);
Server 端: SoapDataModule 中加入 ADOConnection1、ADODataSet1、DataSetProvider1;DataSetProvider1的DataSet设置为 ADODataSet1;ADODataSet1的CommandText设置为空,Connection设置为ADOConnection1。 DataSetProvider1的DataRequest事件:function TDataMod.DataSetProvider1DataRequest(Sender: TObject; Input: OleVariant): OleVariant; begin if ADOConnection1.Connected then begin ADODataSet1.CommandText := Input; Result := DataSetProvider1.Data; end; end; procedure TDataMod.SoapDataModuleCreate(Sender: TObject); Client端: SoapConnection1、ClientDataSet1;ClientDataSet1的ConnectionBroker属性为SoapConnection1,ProviderName属性为DataSetProvider1 查询记录集:procedure TClientForm.Button1Click(Sender: TObject); var SQL:string; begin if not SoapConnection1.Connected then begin SoapConnection1.URL:=URLList.Text+'/soap/IDataMod'; SoapConnection1.Open; end; SQL := Edit1.text; with ClientDataSet1 do begin Data := DataRequest(SQL); end; end; |
|
来自: changkongzhi > 《Delphi》