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名是否有误

作者:Ziv小威
出处:http://www.cnblogs.com/zivxiaowei/
关于作者:专注于Java技术的程序员一枚,此外对JS开发保持着较高的兴趣。爱好音乐,阅读,FM等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
如有问题,可以邮件:wewoor@foxmail.com
微博:Ziv小威

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值