axis2生成webservice服务端返回String[]和String[][]一维数组和二维数组解析
环境:用axis2生成服务端,用aixs做客户端
1:直接返回String[];
public String[] testArr(String name) {
String[] ret=new String[]{"一二三四五","上山打老虎",name};
return ret;
}
发布后,wsdl为:

而普通返回String方法的格式为:

可以看到,返回String[]比返回String的响应中多了一个参数maxOccurs=”unbounded”
用axis做客户端调用这个接口如下:

说明:服务端返回String[]的时候,实际返回的是一个List,里面的元素是String类型的;
Call.setReturnClass的时候,这里设置的是List里面的元素类型String,而不是这个List.class
Invoke方法接口结果的时候,再强转成List即可;
2:返回二维数组String[][];并且里面只包含一个一维数组
特别注意,这里仅仅是将一维数组外面再包一层数组,也就是说返回的二维数组里面只有1个一维数组,而不是多个一维数组
public String[][] testArr2(String name) {
String[] ret=new String[]{"一二三四五","上山打老虎",name};
String[][] ret1=new String[][]{ret};
return ret1;
}
生成的wsdl如下:

可以看到,响应有2个部分,一个是指明返回类型为ArrayOfString数组类型,注意不是List了,二个是这个ArrayOfString里面的元素是String;
axis客户端解析:
2.1:写法1
Returnclass直接设置String[].class,调用接口后直接强转成String[];也就是说,服务端那边原生方法返回的是一个String[][]二维数组,且只包含1个一维数组,但在客户端这边,其实就是一个一维数组;按普通一维数组解析即可:

2.2:写法2

3:返回String[][],但是里面包含多个一维数组;
此情况与2不一样,因为2中是直接接受二维数组里面的那个唯一的一维数组,而这里有多个一维数组,对这种情况,按方法2中直接写call.setReturnClass(String[].class);会直接报错,必须按2.2中的写法2来写,需要call.setReturnType(org.apache.axis.Constants.SOAP_VECTOR);
对应Wsdl文件中的返回类型ArrayOfString

注意,这种情况下,取得的结果,需要对list中的每个元素强转成Vector数组;
总结,当返回的是String[][]的时候,直接在客户端这边,setReturnType(org.apache.axis.Constants.SOAP_VECTOR)即可;
如果发回的二维数组中只有1个一维数组,强转的list就是那个一维数组,即一维数组基本元素String的集合;如果有多个一维数组,强转的list是Vector一维数组的集合
axis2生成webservice服务端返回String[]和String[][]一维数组和二维数组解析的更多相关文章
- 根据wsdl反向生成webservice服务端(3种方法)
前言 正常情况下,都是我们项目组创建一个webservice服务端,客户通过我们提供的wsdl地址生成客户端并进行访问:但是最近和一个国企做接口对接,他们却只提供给我们wsdl,需要我们根据wsdl生 ...
- Axis2创建WebService服务端接口+SoupUI以及Client端demo测试调用
第一步:引入axis2相关jar包,如果是pom项目,直接在pom文件中引入依赖就好 <dependency> <groupId>org.apache.axis2</gr ...
- 记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题
问题一. Unable to find config file. Creating new servlet engine config file: /WEB-INF/server-config.ws ...
- C#根据WSDL文件生成WebService服务端代码
转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html 虽然现在已经进入了.NET FrameWork 4.0的时代,WebS ...
- MyEclipse创建WebService服务端和客户端
1.新建立一个javaWeb项目,一个java类,如图: 2.接下来我们就要将项目中的TestService的这个类生成WebService服务端,选择new Web Service,如图: Next ...
- 一维、二维数组 与 常用的返回数组 以及 fetch_all与fetch_row的区别
一维数组:单行单列的数组. 二维数组:多行多列的数组. (至少两行两列) 索引数组: fetch_all() 返回所有数组 fetch_row() 返回一行或一列数组 (第二行需要输入两 ...
- webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...
- 在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}
最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web se ...
- webservice快速入门-使用wsimport生成ws服务端(二)
上个例子演示的是在当前项目下发布的Webservice Server,而实际应用中和Client是分离的,本文介绍两种客户端开发方式: 1.导出WebService服务端服务接口到jar包,客户端引入 ...
随机推荐
- halt, reboot, poweroff - 中止系统运行
SYNOPSIS /sbin/halt [-n] [-w] [-d] [-f] [-i] [-p] /sbin/reboot [-n] [-w] [-d] [-f] [-i] /sbin/powero ...
- 剑指offer22 栈的压入、弹出序列
写的一个代码,虽然正确通过了,但我觉得会报vector越界的错误 class Solution { public: bool IsPopOrder(vector<int> pushV,ve ...
- python_95_类变量的作用及析构函数
参考:http://www.cnblogs.com/alex3714/articles/5188179.html #类变量的用途:大家共有的属性,节省内存 class Person(): cn='Ch ...
- javaweb基础(3)_tomcat下部署项目
一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:
- mysql5.7.24 解压版安装步骤以及遇到的问题
1.下载 https://dev.mysql.com/downloads/mysql/ 2.解压到固定位置,如D:\MySQL\mysql-5.7.24 3.添加my.ini文件 跟bin同级 [my ...
- oracle 命中率
一般在I/O 使用中,为了提高系统处理速度,系统提前将数据读入一块内存区,叫高速缓存,但提前读入的数据未必就是需要的,这就是命中率..计算公式为 命中率=1-(physical reads/(db b ...
- SDWebImage解析
SDWebImage托管在github上.https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下 ...
- 在Linux系统中重现黑客帝国经典画面
我们需要一个叫cmatrix的小程序,下面写出步骤 1 :依赖环境 yum -y install gcc ncurses-devel 2 :下载程序 wget https://files.cnbl ...
- 01将图片嵌入到Markdown文档中
将图片内嵌入Markdown文档中 将图片嵌入Markdown文档中一直是一个比较麻烦的事情.通常的做法是将图片存入本地某个路径或者网络存储空间,使用URL链接的形式插入图片: ![image][ur ...
- centos7.4进入单用户模式
centos7.4进入单用户模式 1 - 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/b ...