使用delphi 开发多层应用(十九) ios通过soap 访问kbmmw服务器

      随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此

无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提供了C 的客户端,可以使用xcode连接

kbmmw的C 客户端来访问kbmmw 服务器,但是功能有限,而且要熟悉xcode),对于急着想在ios 使用kbmmw

服务的同学,可以先使用kbmmw 的webservice 方式访问kbmmw 服务器。

  下面我就介绍以下如何在ios 访问kbmmw 服务器

还是我们的上面的服务端程序,需要修改几个地方:

TkbmMWTCPIPIndyServerTransport 的端口设成http 的标准接口80,

streamFormat 设成 SOAP

verifyTransfer 设成 False ,以便兼容不同语言的客户端。

另外 需要在Params 里面加一句:

KBMMWSOAPVIAHTTP=1

 

服务器端的其他不用动,按原来的方式注册服务:

procedure TForm1.FormCreate(Sender: TObject);

var

  sd:TkbmMWCustomServiceDefinition;

begin



   sd:=kbmMWServer1.RegisterService(Txalionsrv,false);

 

end;

 编译运行,ok. 服务器端就完成了。

 

客户端由于不能使用kbmmw, 只能使用标准的delphi 功能。

先建立一个标准的ios 空白文件。

放置一个label,一个memo,一个按钮。

然后我们要导入WSDL.

kbmmw 提供了WSDL 文件,文件名为kbmMW.wsdl.在kbmmw 源码的目录。

我们在WSDL 导入器里面选择这个文件,如图:

一路点下去,直到完成。就会生产一个kbmmw.pas.

把这个kbmmw 加入到uses 里面。

然后在button 点击事件里面写入代码

var

   server:IProcessRequestSOAPPort;

   req:ProcessRequest;

   res:TkbmMWSOAPResponse;

   v:variant;

begin

      server:=GetIProcessRequestSOAPPort(false,

            'http://127.0.0.1/server1',nil);

            req:=ProcessRequest.Create;

         try

          // Setup request.

                  req.ServiceName:='XALION_SRV';

                  req.ServiceVersion:='';

                  req.StateID:=-1;

                  req.Func:='sumall';





                  v:=VarArrayCreate([0,1],varVariant);

                  v[0]:=100;

                   req.Args:=v;



                  // Call app server.

                  res:=server.ProcessRequest(req);

              try

            // Check response.

                  Label1.Text:=res.StatusText;

                  if res.StatusCode=0 then // OK

                  begin

                  Memo1.Lines.Add(res.Result);

                  end;

                finally

               res.Free;

            end;

            finally

            req.Free;

          end;

end;

 然后编译ios 程序,真机运行效果如下。

 

 

好了。

 

 

 

你可能感兴趣的:(Delphi)