webservice的返回值问题

2019-03-25 13:49|来源: 网路

我写了一个Webservice,服务端代码如下:
public class GetList {
public ArrayList getList(String str){
System.out.println("size="+str);
int size = Integer.parseInt(str);
ArrayList list = new ArrayList();
for(int i=0;i<size;i++){
list.add("hujll");
System.out.println(list.get(i));
}
return list;
}

}
,通过tomcat服务器发布成功,
客户端代码如下:
public class TestGetList {
public static void main(String[] args) {
ArrayList returnName = null;
try {
String strName = "http://localhost:8080/axis2/services/getlist?wsdl";
Service service = new Service();
Call call = (Call) service.createCall();
QName qn = new QName("urn:getlist", "ArrayList");
call.registerTypeMapping(ArrayList.class, qn,
new BeanSerializerFactory(ArrayList.class, qn),
new BeanDeserializerFactory(ArrayList.class, qn));
call.setTargetEndpointAddress(new java.net.URL(strName));
call.setOperationName(new QName("http://list", "getList"));
call.addParameter("str", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnClass(ArrayList.class);

returnName = (ArrayList) call.invoke(new Object[] { "4" });
for (int i = 0; i < returnName.size(); i++) {
System.out.println("dd=="
+ returnName.get(i).toString());
}
} catch (ServiceException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}

}
问题是:得到了集合的大小,循环打印的结果是空值及输出如下:
dd==[]
dd==[]
dd==[]
dd==[]

我查资料把返回的集合转换成数组,
String[] arr = (String[]) list.toArray();
结果报类转换异常错误。

问题补充:
zhuozhuang 写道
for(int i=0;i<size;i++){
list.add("hujll");
System.out.println(list.get(i));
}
再看看 不空才怪


是哪里的问题?请指点

相关问答

更多
  • python 函数返回值有两种形式: 1 返回一个值。 2 返回多个值。 现看看返回一个值的吧。 def firstvalue(a,b): c = a + b return c print firstvalue(1,2)结果:3 再看看返回多个值的: 那怎么可以返回多个值呢,其他的语言一般调用函数的话,只能返回一个值,可能我不太熟悉所有的语言,我知道的语言只能返回一个值,而python可以返回多个值,感觉非常方便,发代码看下: def secondvalue(a,b): c = a + b return ( ...
  • re.match返回一个Match,否则返回一个None 如果拿来做真假测试的话,返回Match就是真,返回None就是假。
  • 1 。 要使用CXF方式发布服务端; 2 。 你的webservice方法要有json类型的传入参数
  • epoll_ctl用来添加/修改/删除需要侦听的文件描述符及其事件 epoll_ctl函数原型: int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); 成功返回0 ; 失败返回-1.
  • 关于什么需要返回值? 我的理解是“因需要而定”。 以下我举个例子。(注:例子很简单,但当以后大的项目中,就能体现出来它的思路优势了。) 比如:现在给你个问题解决,要求计算1+1等于几,并把结果显示出来。 那么作为一个程序员,在解决这个问题时就会把步骤分开: 1.计算1+1等于几 2.显示结果 ---------------------------------------------------------- //那么首先在你的Java程序中的主函数中就先这样写: public Class Test{ pub ...
  • 执行更新调用的方法是executeUpdate(); 这个方法的返回值就是int型,就是改变了的条数
  • 如果程序有返回值的话 只能是3.5 因为只有那一个return语句 所以 但是程序从if(flag!=5){ f(); flag++; } 这里面跳出后,肯定不会进到 else{ return 3.5; } 里面 所以程序无返回值 这样就行了 #include static int flag=0; double f(){ if(flag!=5){ flag++; return f(); } else{ return 3.5; } } main(){ double temp=0; temp=f(); prin ...
  • 加布里埃尔·赫尔利给出了正确的答案,我只想详细说明一下。 我喜欢使用ajax函数,而不是获取或发布,因为我发现它更具可读性,并且可以对ajax调用的不同结果作出反应。 $.ajax({ type: "GET", dataType: "html" url: "services/addUser", data: "{name:'Jo', email:'an@ddress.com'}", success: function(result){ //It worked! ...
  • 看起来你正在经历回调地狱 。 当您有多个异步函数并且需要处理所有错误和成功时,就会发生这种情况。 这正是承诺发明的情况。 如果您没有ES6,请查看jquery promises ,否则它们是内置的: ES6承诺 它们允许更可读,同步的代码。 例如,您可以执行以下代码: $.when( // waits for two promises to be resolved getUserName(userId) .then(function(name) { // once ...
  • 您应该使用AJAX调用传递数据: data: {param:5}, 使用HTTP请求来读取参数,您还需要为返回JSON的方法使用@ResponseBody注释: @RequestMapping(value = "/services/getVillages") @ResponseBody public Village getAllVillages(HttpServletRequest request) throws JSONException { String param = request. ...