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客户端解析:按普通一维数组解析即可:

Returnclass直接设置String[].class,调用接口后直接强转成String[];也就是说,服务端那边原生方法返回的是一个String[][]二维数组,且只包含1个一维数组,但在客户端这边,其实就是一个一维数组;

3:返回String[][],但是里面包含多个一维数组;

此情况与2不一样,因为2中是直接接受二维数组里面的那个唯一的一维数组,而这里有多个一维数组,对这种情况,目前手写axis客户端一直报错,但是用eclipse的axis直接解析aixs生成代理类又可以正常调用接口且返回实际的二维数组;具体原因未知。

原文地址:https://www.cnblogs.com/tapt/p/10097041.html

时间: 2024-10-14 01:22:45

axis2生成webservice服务端返回String[]和String[][]一维数组和二维数组解析的相关文章

【webservice】发布axis2的webservice服务端

axis2版本:axis2-1.5.4 准备工作:下载axis2-1.5.4-war.zip(生成服务端).axis2-1.5.4-bin.zip(axis2的jar包),jdk5(及以上版本).tomcat(端口我设成8086了) 手把手超级详细介绍axis2的webservice服务端的生成与发布. 1. 解压axis2-1.5.4-war.zip得axis2.war,把axis2.war放到tomcat的webapps目录, 启动tomcat就能加载axis2.war并生成新的axis2目

C#根据WSDL文件生成WebService服务端代码

转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html 虽然现在已经进入了.NET FrameWork 4.0的时代,WebService也已经逐渐被淘汰,取而代之的是WCF. 但在工作中难免遇到需要兼容旧版本程序和按照以前的文档进行开发. 一般一个已经实现功能的WebService会发布自己的WSDL文件,供客户端调用生成代理类. 但有时是先有server与client交互的接口定义(WSDL)文件,然后由server和

71. C++ 分别用指针数组和二维数组生成二维空间,存储数据并释放。 练习new/delete, new[]/delete[]

分别用指针数组和二维数组生成二维空间,存储数据并释放.比如,数据如下:  //使用了下fgetc() 1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 5 6 int main() 7 { 8 #if 0 //生成二维数组存储 9 FILE* fp = fopen("G:\\qtcode\\temp.txt","r"); 10 11 //char buf[3

记一次在Eclipse中用Axis生成webservice服务端的过程中出现的问题

问题一. Unable to find config file.  Creating new servlet engine config file: /WEB-INF/server-config.wsdd 找不到这个.wsdd的配置文件,没有自动生成! 原因是使用Eclipse自动生成axis服务端时没有执行的最后一步!如图: 当进行的这一步时,需要接着点击启动服务的按钮,之后Next按钮就会可用,点击Next按钮后就会自动生成这个.wsdd文件! 问题二. AxisFault faultCod

动态生成一维数组和二维数组

1 #include <iostream> 2 #include <time.h> 3 #include <windows.h> 4 using namespace std; 5 6 //动态申请内存,实现一维数组 7 void oneDimensionalArray(int n) 8 { 9 int *num = new int(n); 10 srand(time(NULL)); 11 for(int i = 0; i < n;i++) 12 { 13 num[

一维、二维数组 与 常用的返回数组 以及 fetch_all与fetch_row的区别

一维数组:单行单列的数组. 二维数组:多行多列的数组.       (至少两行两列) 索引数组: fetch_all() 返回所有数组 fetch_row() 返回一行或一列数组  (第二行需要输入两边,第三行需要输入三遍) 返回关联数组: fetch_assoc() 返回数组含有对象: fetch_object() 返回的数组既有索引又有关联: fetch_array()

返回一个二维数组中最大联通子数组的和

1 #include <iostream> 2 #include <time.h> 3 #include<string> 4 #include<fstream> 5 #define M 3 6 #define N 4 7 using namespace std; 8 9 int main() 10 { 11 int length[100],num[M][N] = {0},visit[M][N]={0},i=0;//length[100],是把文件中的数组转化

在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}

最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web service中的一个serch()方法,然后发现,每次的返回值都是一个AnyType{},Logcat如图所示: 网上搜集了很多资料,产生的原因其实很简答,是因为服务端返回值为null,Logcat中显示的就职anyType{},找到了原因,解决起来也就好说了,其中包括这些方法: {解决方法引用自博客

PHP写webservice服务端

1) WebService技术介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术.仅仅有通过Web Service,client和server才可以自由的用HTTP进行通信.不论两个程序的平台和变成语言是什么. XML.SOAP和WSDL是Web Service平台的三大技术: WebService採用HTTP协议数据传输.採用XML格式封装数据,即XML中说明调用远程服务对象的哪个方法.传递的參数是什么.以及服务对象的返回结果是什么. XML是WebService平台中表