关于C#下写的Web Service 服务在Delphi下调用时的问题__教程 |
|
日期:2007-5-20 1:23:31 人气:58 [大 中 小] |
|
|
|
其中我们需要特别注意的是,WebMethodAttribute,这也是我们这一次需要讲述的重点内容,只要给一个方法加上[WebMethodAttribute],哪怕里面没有任何属性,那么WebService就会把这个方法暴露(Expose)给了客户段调用者.下面我们讲述一下它的6个属性,其中包括2个描述性的信息属性,4个功能属性
描述性的信息属性:
Description MessageName 4个功能性属性:
BufferResponse CacheDuration EnableSession TransactionOption 其中我们需要注意MessageName这个属性它Delphi调用.NET平台下开发的WebService的时候,如果你设置了MessageName这个Attribute的话,那么客户端调用时会报错误。这也许是一个Bug,或许后面的版本会解决这个问题。至于这几个属性的具体功能就不再这里详细描述了。大家可以去看看相关的书籍。
下面我把Delphi调用webservice的步骤列举一下:
首先如果你只是开发调用客户端,那么你只需要创建一个普通的应用程序即可,然后需要你做的是,在工具栏WebServices下面找到SOAPHTTPClient这个控件,然后把它放在你的客户端应用窗体上;
其次就是你需要设置这个SOAPHTTPClient的属性URL或者WSDL,这个内容就是你的WebService的服务地址
比如我们当前例子的服务地址是:http://localhost/AttributeTesting/AttributeTesting.asmx
如果你想输入WSDL那么就是http://localhost/AttributeTesting/AttributeTesting.asmx?wsdl
这样就完成了控件设置;
然后我们需要引入服务器端的WSDL,你可以手工来做,也可以用Delphi提供的WebServices Importer功能来引入。
最后你只需要对引入的WSDL的接口进行调用即可。在这里我们的对应代码是:
procedure TForm1.BitBtn1Click(Sender: TObject); var aa:AttributeTestSoap;//这个就是WSDL下的类接口对象 msg:widestring; bb:double; begin //HTTPRIO2 其实就是所谓的代理类,它负责进行数据传输发送Request和接受Response的 aa:=HTTPRIO2 as AttributeTestSoap;
bb:=100.00; msg:=aa.transMoney(bb);//这就是调用web服务所暴露给我们的web服务方法WebMethod showmessage(msg); end; |
|
出处:本站原创 作者:佚名 |
|
|