隨着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 程序,真機運行效果以下。
好了。