webservice调用接口,接口返回数组类型
1.
其中sendSyncMsg1接口是方法名,Vector实现了List接口,xml是sendSyncMsg1的方法形参
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL( "http://127.0.0.1:8080/services/fangkunTest"));
call.setOperationName(new QName("http://127.0.0.1:8080/", "sendSyncMsg1"));
call.addParameter(new QName("http://127.0.0.1:8080/", "xml"), XMLType.XSD_STRING, ParameterMode.IN); //必须这么用,不知道为啥,此处与返回基本类型写法有差别
call.setReturnType(XMLType.SOAP_VECTOR); //返回时数组类型,暂时知道用XMLType.SOAP_VECTOR
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://127.0.0.1:8080/sendSyncMsg1");
Vector result = (Vector) call.invoke(new Object[] { "昆明" });
// Vector实现了List接口
System.out.println((String) result.get(1));
if (result != null && result.size() != 0) {
if (result.get(0).equals("1")) {
String etoken = (String) result.get(1);
} else {
System.out.println(result.get(2));
return;
}
}
2.(转来自google)
Java利用Axis远程调用WebService接口
准备工作:
主要依赖的包:
1.axis.jar
官网:http://axis.apache.org/axis/
2.jaxrpc.jar
下载地址:http://www.java2s.com/Code/Jar/j/Downloadjaxrpcjar.htm
说明:
在拿到wsdl地址后先分析清楚xml文件的一些参数,然后再动手写代码,例如service名称,targetNamespace,请求operation的名称,要传入的参数类型,返回结果类型等等。具体的代码参考如下:
1 package com.joysee.account.service.impl;
2
3
4 import java.rmi.RemoteException;
5
6 import javax.xml.namespace.QName;
7 import javax.xml.rpc.ParameterMode;
8 import javax.xml.rpc.ServiceException;
9
10 import org.apache.axis.client.Call;
11 import org.apache.axis.client.Service;
12
13
14 public class Test {
15
16 /**
17 * @param args
18 * @throws ServiceException
19 * @throws MalformedURLException
20 * @throws RemoteException
21 */
22 public static void main(String[] args) throws ServiceException, RemoteException {
23
24 //WSDL地址
25 String wsdlUrl ="http://IP:PORT/ExampleWebService?wsdl";
26 //看具体响应的WSDL中的namespace
27 String nameSpaceUri ="http://ws.exmaple.com/";
28
29 Service service = new Service();
30
31 Call call = (Call)service.createCall();
32 call.setTargetEndpointAddress(wsdlUrl);
33
34 //设置operation 名称,
35 call.setOperationName(new QName(nameSpaceUri, "order"));
36
37 //设置账户,注意参数为XSD_STRRING
38 call.addParameter("account", org.apache.axis.Constants.XSD_STRING,
39 ParameterMode.IN);
40
41 //设置账户,注意参数为XSD_LONG
42 call.addParameter("price", org.apache.axis.Constants.XSD_LONG,
43 ParameterMode.IN);
44
45 //设置返回类型为对象数组
46 call.setReturnClass(Object[].class);
47
48 Object[] result = (Object[]) call.invoke(new Object[]{"test","123456"});
49
50 System.out.println(result[0]);
51
52 }
53
54 }
常见异常:
1.org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType
这个异常需要检查call.setReturnClass(); 中的类型,或者是setReturnType()
2. Unexpected wrapper element order found.
可以检查setOperationName中的QName参数,其中的NameSpace地址是不是有问题,或者operation名是否有误
webservice调用接口,接口返回数组类型的更多相关文章
- gsoap生成webservice调用客户端接口
1.下载gsoap2.8 2.运行 wsdl2h.exe -o XXX.h XXX.wsdl wsdl文件可以是本地文件,也可以是服务器的wsdl,比如http://192.168.0.122:333 ...
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解 ...
- WebApi 接口返回值类型详解 ( 转 )
使用过Webapi的园友应该都知道,Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 此篇就围绕这四块分 ...
- WebApi接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...
- WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型
首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...
- (转)C# WebApi 接口返回值不困惑:返回值类型详解
原文地址:http://www.cnblogs.com/landeanfen/p/5501487.html 正文 前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi ...
- [转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
本文转自:http://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T c ...
- C#进阶系列——WebApi接口返回值类型详解
阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义I ...
- Web Api 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 WebApi 接口参数:传参详解,这篇博文内容本身很基础 ...
随机推荐
- Node.js npm
Node程序包管理器(NPM)提供了以下两个主要功能: 在线存储库的Node.js包/模块,可搜索 search.nodejs.org 命令行实用程序来安装Node.js的包,做版本管理和Node.j ...
- 只要是从事IT,会些CSS,XHTML总归是有好处的
上次是十多年前看了的,这次又系统看了下.. 这系统的HEAD FIRST,我很喜欢...收藏过三四本啦...
- J2EE和EJB有什么关系?
其实j2EE就是java的企业版,与javaSE(标准版)有是有区别的,所以运行环境会有差异(简单点可以说,这是两组不同的接口),我们一般所熟悉的tomcat仅仅只实现了j2ee的一小部分规范,它只是 ...
- Linux下常见权限操作相关命令
ls -alls -ld chmod 700 sys_config chmod 700 sys_objschmod 4711 objget su test_setuid -c "./objp ...
- sed文本处理--文本行扩展与分割
原文件: 00 abc sdfdsf1 2 45 3 400 xfd xdfssdf3 322 345 234 处理后文件: 00 abc sdfdsf 1 2 400 abc sdfdsf 5 3 ...
- 图论(2-sat):HDU 3062 Party
Party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 【模拟】NCPC 2014 D Dice Game
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1790 题目大意: 两个人,每个人有两个骰子,每个骰子可以等概率取[a,b],问哪个人两 ...
- Vim笔记
复制多行: v 可视化,选择多行,然后yy复制.
- cache的工作原理
http://www.360doc.com/content/11/0307/21/3791508_99049437.shtml TLB(Translation Lookaside Buffer,也称快 ...
- kafka在zookeeper中的存储结构
参考site:http://kafka.apache.org/documentation.html#impl_zookeeper 1.zookeeper客户端相关命令 在确保zookeeper服务启动 ...