WEB开发网
开发学院手机开发Android 开发 android使用webservice传递对象 阅读

android使用webservice传递对象

 2012-06-13 13:26:04 来源:WEB开发网   
核心提示:我一直以为是reqQueryPayOrder i:type="d:anyType" 这句话导致服务器无法识别我的对象类型,但是改来改去,android使用webservice传递对象(2),它永远都是anytpye,而且我不知道怎么把这句话去掉,请求的xml就成了这样了<v:Envelope

我一直以为是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,
终于知道错误所在之前代码是这样的
HttpTransportSE ht = new HttpTransportSE(URL);
ht.debug = true;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER10);
envelope.bodyOut = so;
envelope.dotNet = true;
envelope.setOutputSoapObject(so);

改正的话,需要将
envelope.bodyOut = so;
这句注释,将
[java] view plaincopy
envelope.dotNet = true;
改为
envelope.dotNet = false;

这样,请求的xml就成了这样了
<v:Envelope xmlns:i="http://www.w3.org/1999/XMLSchema-instance" xmlns:d="http://www.w3.org/1999/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header /><v:Body><n0:queryPayOrder id="o0" c:root="1" xmlns:n0="http://*******/****"><reqQueryPayOrder i:type="d:anyType"><appSerialNo i:type="d:string">12345</appSerialNo><appPayKey i:type="d:string">999</appPayKey></reqQueryPayOrder></n0:queryPayOrder><:Body><:Envelope>

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

上一页  1 2 

Tags:android 使用 webservice

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接