使用delphi 開發多層應用(十九) ios經過soap 訪問kbmmw服務器

      隨着delphi XE4 的推出,開始真正意義上支持ios 的開發,因爲目前kbmmw 還不徹底支持ios 的開發,所以ios

沒法直接使用kbmmw 的客戶端訪問kbmmw 的服務器(雖然kbmmw 也提供了C 的客戶端,可使用xcode鏈接web

kbmmw的C 客戶端來訪問kbmmw 服務器,可是功能有限,並且要熟悉xcode),對於急着想在ios 使用kbmmwxcode

服務的同窗,能夠先使用kbmmw 的webservice 方式訪問kbmmw 服務器。服務器

  下面我就介紹如下如何在ios 訪問kbmmw 服務器app

仍是咱們的上面的服務端程序,須要修改幾個地方:code

TkbmMWTCPIPIndyServerTransport 的端口設成http 的標準接口80,orm

streamFormat 設成 SOAPserver

verifyTransfer 設成 False ,以便兼容不一樣語言的客戶端。blog

另外 須要在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 程序,真機運行效果以下。

 

 

好了。

相關文章
相關標籤/搜索