专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Web前端

android施用webservice传递对象

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
<script language="javascript">c_a_3();</script>
android使用webservice传递对象

工作中遇到这么一个问题,郁闷了好久终于解决,记录一下

平时网上有调用webservice天气预报的demo,讲的很详细,但是天气预报的webservice传递的是简单数据类型,需要传递对象的时候就比较郁闷了。先讲一下如何传递对象吧。

我用到的方法是直接把对象序列化,因为服务器端接受的不只有我的请求,所以不能用网上说的将对象装变为字符串的方法。

序列化对象的时候,要把对象实现KvmSerializable接口,直接实现Serializable接口是不行的。接口提供的几个方法都需要重写,下面给个我的例子,接口重写的话,可以按照例子中的意思写,很简单。

ReqQueryPayOrder 有两个属性,分别为appSerialNo和appPayKey。目的就是把带有这两个属性的对象传递给webservice

然后就是按照网上说的方法进行请求webservice了,很简单,不多说了。就是将repo对象add进去,这里我提供两种方法,第一种简单一些,第二种可以设置一些参数。


但是后来发现,我所请求的webservice对象,服务器识别不了,一直都是空对象。

从服务器方面打印出我请求的xml如下(我把网址过滤了)

我一直以为是reqQueryPayOrder i:type="d:anyType" 这句话导致服务器无法识别我的对象类型,但是改来改去,它永远都是anytpye,而且我不知道怎么把这句话去掉。至今,我都不知道怎么改动它。


后来,想到可能是服务器的原因,就查了一下服务器,原来,我们公司服务器用的是cxf框架,看到一个网页有关于android请求cxf的格式(http://mail-archives.apache.org/mod_mbox/cxf-users/201010.mbox/%3CAANLkTimnXgG1-WHhoJR1=Y97JmUKPW+vvq=+U9wxGyW4@mail.gmail.com%3E),就跟我的比较了一下,发现有这么一点问题,他的方法标签里面比我的多了一点东西

 <n0:getWatchableList xmlns:n0="http://watchable.portal.osgi.cnam.org/" c:root="1" id="o0">
<queryPayOrder xmlns="http://******/*****" id="o0" c:root="1">
比我多了个n0,各个子标签里面也会有n0,
感觉应该是n0的问题又查了好久如何添加n0,
终于知道错误所在之前代码是这样的

改正的话,需要将这句注释,将
改为

这样,请求的xml就成了这样了

服务器终于能正确解析我的对象了。。。


友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: