Ksoap2 获取webservice返回值的getResponse() 出现的问题
今天写了一个判断记录重复的webservcie 返回布尔类型
// 判断序列号在数据库是否重复
public static boolean isSerialNumExist(String serialNumber)
throws IOException, XmlPullParserException {
boolean isExist = false;
String methodName = "IsSerialNumberExist"; // 方法名
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); //SERVICE_URL为 webservice的地址
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
SoapObject soap = new SoapObject(SERVICE_NS, methodName);
// 传入参数
soap.addProperty("serialNumber", serialNumber);
envelope.bodyOut = soap;
// 设置webservice的提供者为.net平台的
envelope.dotNet = true;
ht.call(SERVICE_NS + methodName, envelope);
// SoapObject in = (SoapObject) envelope.getResponse();
String response=envelope.getResponse().toString(); //值为: false
SoapObject in = (SoapObject) envelope.bodyIn;
// String bodyIn=in.toString();
// 值为:IsSerialNumberExistResponse{IsSerialNumberExistResult=false; }
if (in != null) {
isExist = Boolean.valueOf(in.getProperty(methodName + "Result")
.toString());
}
return isExist;
}
一、SoapSerializationEnvelope携带输出参数与返回值:
(1)其属性bodyIn为SoapObject类型 内容格式为 methodName+Response{ methodName+Result=值;... } (要是返回的是字符串数组:
methodName+Response{ methodName+Result=anyType{stirng=value1;string=value2;...} })
获取指定属性的值:
SoapObject in = (SoapObject) envelope.bodyIn;
in.getProperty(methodName+Result).toString();
(2)而我通过 getResponse()获取的返回值直接就是false (要是返回值是字符串数数组 其格式为: anyType{ string=value1; stirng=value2;...} )不能转换成SoapObject类型,此时貌似getResponse()就是什么soapprimitive类型了; 数组的话可以转换;
所以在使用的时候要么try catch 要么直接用bodyIn 就不会出错的样子,如下:
SoapObject result=null;
try{
result = (SoapObject) soapEnvelope.getResponse(); }
catch (ClassCastException e) {
result = (SoapObject)soapEnvelope.bodyIn;
}
二、不过还一个问题是: 这两种获取返回值的方式会有所不同,具体体现为 result.getProperty(String name) 传入的参数差异
返回单个值:
getResponse():
object response=envelope.getResponse(); bodyIn:
object in=in.getProperty(methodName + "Result");
返回字符串数组:
getResponse:
if (soapIn != null)
{
int count = soapIn.getPropertyCount(); // 属性个数
for (int i = ; i < count; i++)
{
soapIn.getProperty(i).toString(); // do as you like
}
} bodyIn:
if (soapIn != null)
{
SoapArray soapArray=soapIn.getProperty(methodName+"Result"); // 差异
int count = soapArray.getPropertyCount(); // 属性个数
for (int i = ; i < count; i++)
{
soapArray.getProperty(i).toString()
}
}
Ksoap2 获取webservice返回值的getResponse() 出现的问题的更多相关文章
- C#获取存储过程返回值和输出参数值的方法
//转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...
- Python从线程获取函数返回值
Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1) ...
- EF中执行存储过程,获取output返回值
EF不能直接支持执行存储过程,于是使用转化成执行SQL语句的形式,却怎么也获取不到output的值,折腾的好久,终于解决了,分享下曲折的经历: public int AddVote(int title ...
- PHP获取函数返回值的引用
通过在函数前添加&可以获取函数返回值的引用,如:function &test(){return 10;}
- android两种方式获取AsyncTask返回值
获取AsyncTask返回值,在Activity中使用. 引用链接:https://www.oschina.net/code/snippet_725438_49858#72630 [1].[代码] [ ...
- asp 获取url 返回值 和 对json 返回值的处理
Function GetHttpPage(HttpUrl,endoce) If endoce = "" Then endoce = "GB2312" If Is ...
- java 反射获取方法返回值类型
//ProceedingJoinPoint pjp //获取方法返回值类型 Object[] args = pjp.getArgs(); Class<?>[] paramsCls = ne ...
- 用jquery的ajax方法获取return返回值的正确姿势
如果jquery中,想要获取ajax的return返回值,必须注意两方面,ajax的同步异步问题,在ajax方法里面还是外面进行return返回值. 下面列举了三种写法,如果想成功获取到返回值,参考第 ...
- Python3.x:Selenium+PhantomJS爬取带Ajax、Js的网页及获取JS返回值
前言 现在很多网站的都大量使用JavaScript,或者使用了Ajax技术.这样在网页加载完成后,url虽然不改变但是网页的DOM元素内容却可以动态的变化.如果处理这种网页是还用requests库或者 ...
随机推荐
- 【摘】linux之shutdown、halt和reboot命令详解
在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用()命令实现 #shutdown -r now #halt #reboot #init3 正确答案:A 在linux命令中reboot是 ...
- 程序员必备:Oracle日常维护命令
上一篇讲了Linux的日常维护命令,这篇讲讲Oracle的日常维护命令.工作中需要使用Oracle数据库的童鞋们,相信或多或少都需要对Oracle做一些基本的维护操作,例如导入导出总该有吧?( ...
- JavaScript对象的创建之构造函数
通过构造函数的方式创建和基于工厂的创建类似,最大的区别就是函数的名称就是类的名称,按照java的约定,第一个字母大写. 使用构造函数创建对象时,在函数内部是通过this关键字来完成属性的定义. fun ...
- 【转】一个URL编码和解码的C++类
下面的代码实现了一个用于C++中转码的类strCoding.里面有UTF8.UNICODE.GB2312编码的互相转换. .H文件: #pragma once #include <iostrea ...
- Prim算法POJ1258
http://poj.org/problem?id=1258 这道题是最简单的一个啦,,,, #include<stdio.h> #include<iostream> #inc ...
- 初探接口测试框架--python系列1
点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...
- 如何激活phpstorm | phpstorm的下载
2016年7月14日 phpsotrm 推送2016.2 更新 phpstorm的下载地址 https://www.jetbrains.com/phpstorm/download/#section=w ...
- Select的深入应用(2)
首先创建两张表. 全连接 全连接:在检索时指定多个表,将每个表用逗号分隔,这样每个表的数据行都和其他表的每行交叉产生所有可能的组合,这样就是一个全连接.所有可能的组和数即每个表的行数的乘积. 或者: ...
- MSP430F149学习之路——按键与LED
代码 /*********************************** 程序功能:用按键控制LED状态 缺点:按键按下后无法改变LED灯的状态,可以利用板上的复位键^~^ ********** ...
- HTML DOM(学习笔记二)
嗯,在HTML DOM(学习笔记一)中简单描述了一下HTML DOM 是什么,这一篇将记录下来有关HTML DOM的内容! 1:DOM节点 首先,再来看一下HTML DOM的树状结构,如下图所示: 这 ...