XE5 ANDROID通过webservice访…

http://blog.sina.com.cn/s/blog_562349090101e9pa.html

服务端需要midas.dll<wbr><wbr></wbr><wbr><wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> XE5对android的平台支持很有吸引力,虽然目前用来直接开发应用到安卓市场卖赚钱可能性估计不大(安卓市场目前国内好像都是免费的天下),但是对于企业应用很是很有帮助的,比如开发一个手机客户端随时查询企业erp等管理软件的数据库!<br><wbr><wbr></wbr><wbr><wbr></wbr> webservice以前基本没有接触,恶补了几天,服务端用ro开发比较快捷(ro下载请自己baidu)</wbr></wbr></wbr></wbr></wbr></wbr>

一,服务端开发:

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 1,打开delphi xe(服务端我用的是xe开发的,因为目前还没有出支持xe5的ro)</wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 新建工程---RO sdk--vcl standalone--建立成功</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 2,工程打开后,在ide的菜单ro中选择edit serverice library</wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 3,打开ServerForm,删除上面的2个控件,并添加TROIpHTTPServer(属性中可以设置端口), TROSOAPMessage 2个控件,设置TROIpHTTPServer的<wbr><wbr></wbr> dispatchers属性,绑定TROSOAPMessage</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 4,默认已经添加了了哇library 和newservice,我们一切按默认,用的是默认的一个函数sum,2个数求和</wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 5,打开NewService_Impl,实现sum的具体代码:Result:=a+b;</wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 6,运行服务端</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 打开浏览器测试:http://127.0.0.1:8099/soap</wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr> 8099是我步骤3中设置的端口号,应该可以看到xml文件,说明服务端成功</wbr></wbr>

<wbr><wbr></wbr></wbr>

二、服务端开发

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 1,打开xe5(为了测试android平台,客户端用xe5开发了)</wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 2,新建项目-选择fm 移动项目</wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 3,添加THTTPRIO控件</wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 4,导入wsdl---</wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 添加项目---web service --import wsdl</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 弹出向导对话框</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 这步遇到了问题</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 填入我服务端开发的soap地址,点击下一步,最后弹出错误,原因不明</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr>   解决方法,回到xe开发服务端的界面,打开ide菜单ro中选择edit serverice library</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr>   选择view -wsdl-save as 操作保存 wsdl文件</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 回到xe5中的导入wsdl文件对话框,改为直接选择上面的wsdl文件,成功得到soap_1.pas</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr> 在unit1.pas中添加soap_1.pas引用</wbr></wbr>

<wbr><wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 5,在界面添加2个edit,1个lable,一个button</wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> 添加button的clickdaima</wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr><wbr><wbr></wbr> procedure TForm1.Button1Click(Sender: TObject);<br>     begin<br>       HTTPRIO1.URL:='http://192.168.1.103:8099/SOAP';<br>       Label1.Text:=IntToStr((HTTPRIO1 as NewService).Sum(StrToInt(Edit1.Text),strtoint(Edit2.Text)));<br>     end;</wbr></wbr></wbr>

<wbr><wbr></wbr> 6,发布至android平台测试(注意保证android平台与电脑的网络连通)</wbr>

<wbr><wbr></wbr></wbr>

XE5 ANDROID通过webservice访问操作MSSQL数据库

一、服务端

<wbr><wbr></wbr>在ro里添加函数(在impl上添加阿东connection,adoquery,dataprovider)</wbr>

function TNewService.getdata(const sqlstr: Utf8String): Variant;
begin
qry1.Close;qry1.SQL.Text:='';
qry1.SQL.Text:=sqlstr;
qry1.Open;
ds1.Data:=dtstprvdr1.Data;
Result:=ds1.XMLData;//传一个xmldata给客户端
end;

<wbr><wbr></wbr></wbr>

二、客户端调用同,添加wsdl,XE5 ANDROID平台 调用 webservice

客户端添加HTTPRIO,stringgrid等(fmx数据显示暂时无类似datagrid的)

读取数据代码

HTTPRIO1.URL:='http://192.168.1.103:8099/SOAP';
ClientDataSet1.XMLData:=(HTTPRIO1 as soap.NewService).getdata('SELECT top 10 [EmployeeID],[EmployeeName],[DepartmentID] FROM [GM_MT].[dbo].[GM_KQ_Employee]');

<wbr><wbr></wbr>while<wbr><wbr></wbr> not ClientDataSet1.Eof do<br><wbr><wbr></wbr>begin<br><wbr><wbr></wbr><wbr><wbr></wbr> StringGrid1.Cells[0,i]:=ClientDataSet1.FieldByName('EmployeeID').AsWideString;<br><wbr><wbr></wbr><wbr><wbr></wbr> StringGrid1.Cells[1,i]:=ClientDataSet1.FieldByName('EmployeeName').AsString;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr><wbr><wbr></wbr> StringGrid1.Cells[2,i]:=ClientDataSet1.FieldByName('DepartmentID').AsString;<br><wbr><wbr></wbr><wbr><wbr></wbr> ListBox1.Items.Add(ClientDataSet1.FieldByName('EmployeeName').AsWideString);<br><wbr><wbr></wbr><wbr><wbr></wbr> i:=i+1;<br><wbr><wbr></wbr><wbr><wbr></wbr> ClientDataSet1.Next;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr></wbr> end;</wbr>

<wbr><wbr></wbr></wbr>

<wbr><wbr></wbr></wbr>

现在遇到的问题是客户端显示中文有乱码!暂时未解决,客户端使用了ANSITOUTF8未解决

<wbr><wbr></wbr></wbr>

10-10 中文乱码已解决:数据库中文字段一定要设置为nvarchar

<wbr><wbr></wbr></wbr>

http://pan.baidu.com/share/link?shareid=1663812760&uk=4127515284<wbr></wbr><wbr></wbr>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值