Delphi编写soap服务器与客户端程序

使用三层结构开发客户机、服务器软件已成为c/s系统中的主流;下面是自己在开发系统中的一些体会;本文已delphi7(windows)或kylix3(linux9)为环境描述:

1 、编写服务器程序

首先,看看soap服务器的建立,在delphi7中的新建栏目中,选择“ WebServices”如下图,选择“Soap Server Application”

点击“ok”,开始选择创建服务程序的类型:
ISAPI/NSAPI Dynamic Link Library –将生成一个. dll文件,可以用IIS来进行发布;
CGI Stand-alone executable 将生成一个CGI程序;注意:CGI程序一般比较占用内存
Apache 1.x;Apache 2.x 可以用Apache来发布;可以实现在不同平台上用行;
Web App Debugger executable 用webappdbg.exe运行的一个方便调试的程序;
     我们这里选取Web App Debugger executable ;主要是方便进行调试,但作为项目运行最好选取IIS(把编译好的程序 dll放在发布目录下;在 iis主目录配置选项下选取“脚本和 可执行程序”,在浏览器输入相应的地址即可)或Apache 来作为soap服务器的载体。
      接下来会提示是否创建soap module ;我在这里选取了“是”;服务端程序的编写需注意对客户端并发访问的处理。

将会生成:
myTestIntf.pas 接口定义文件内容:
unit myTestIntf;
interface
uses InvokeRegistry, Types, XSBuiltIns;
type
      ImyTest = interface(IInvokable)
      ['{FA05E275-DF6F-4C8D-BBF6-3F946B187BB3}']
      function Login(name:string;pwd:string):boolean;stdcall;    //需要发布的方法
end;
implementation
initialization
      InvRegistry.RegisterInterface(TypeInfo(ImyTest));
end.
 
myTestImpl.pas 接口实现文件内容:
unit myTestImpl;
interface
uses InvokeRegistry, Types, XSBuiltIns, myTestIntf;
type
      TmyTest = class(TInvokableClass, ImyTest)
  public
      function Login(name:string;pwd:string):boolean;stdcall;
  end;
implementation
{ TmyTest }
function TmyTest.Login(name, pwd: string): boolean;       //自己定义的方法的实现代码
begin
    if ((name='1') and (pwd='abc')) then
          result:=true
    else
          result:=false;
end;
initialization
  InvRegistry.RegisterInvokableClass(TmyTest);
end.
 
用delphi7带的 webappdbg或 iis启动发
(1)       即可看到发布的接口;
(2)       用iis做发布,在浏览器中输入“http://localhost/a/Project1.dll”发布的地址;
用 webappdbg做发布,点击 delfault url
2、导出soap接口的xml文档

点击“ ImyTest”,把 文件另存“ImyTest.xml”即可。
3、客户端程序的编写
       首先,在下图中把上面导出的 xml 文件导入到你所用的客户端程序;
    
1 )如果服务端的接口是一个方法:在客户端放入 THTTPRIO 控件,选取其中 wsdl
         的文件地址或 URL 即可;在代码中调用接口的列子如下:
         if (HTTPRIO1 as ImyTest).Login('1','abc') then
             showmessage('true')
         else
             showmessage('false');
2 )如果服务端的接口是一个数据模块:在客户端放入 TSoapConnection 控件;设置它的 URL 即可;然后可以放置其他的数据控件( TClientDataSet )来在 RemoteServer 选项,选择上面的 TSoapConnection ;其他的数据操作与普通的数据控件操作相同。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值