java用axis2生成webservice客户端代码及使用方法

这两天javaweb项目需要调用c#发布的webService接口。自己琢磨了半天,到网上赵各种资料,有java自带的wsimport方法,还有用axis2的jar包去生成。在实现中也遇到了一些问题,花了点时间解决,现在将它记录下。


java开发新手,欢迎吐槽。


1. 用jdk自带的wsimport生成代码,命名: wsimport -p com.webservice.client http://.....svc?wsdl

命令参数:

  •  -d 生成客户端执行类的class文件的存放目录
  •  -s 生成客户端执行类的源文件的存放目录
  •  -p 定义生成类的包名
  • 生成代码如下:
  • 对应的.class有对应的.java类。但是我找不到webservice对应的service类。我怀疑是jdk的版本问题。
  • 之后我找了很久也没有解决。望高手指点.....
2. 用org.apache.axis2jar包生成webservice客户端代码

先要配置电脑的axis2环境:
  • a. 下载apache的apache压缩包,我下载的是axis2-1.6.2-bin.zip文件
  • b. 解压到目录webservice,如下:
  • c 配置环境变量AXIS2_HOME(到bin目录)
  • d. 打开cmd命令行cd到axis2的bin目录
  • 运行命令:WSDL2Java -p com.webservice.client -uri http://.......svc?wsdl
  • 命令参数 -p package; -S  为生成的源码指定存储路径; -o <path>  指定生成代码的输出路径
  • 生成一个webservice名称加上Stub.java的java类
  • 至此,java客户端代码生成介绍。
  • 使用生成的java类
  • a. 将java文件拷贝到项目中
  • b. 添加jar包支持。要添加的jar包很多,我这里怕少了jar包,所以把axis2目录中的lib中的所有jar包都添加到项目中去。
  • c. 添加addressing-1.5.5.jar.(这个不能少)
  • d. 编写main测试类
  • import com.webservice.hb2012.client.MobileOAWcfServiceStub;
    import com.webservice.hb2012.client.MobileOAWcfServiceStub.GetNewsDetail;
    import com.webservice.hb2012.client.MobileOAWcfServiceStub.GetNewsDetailResponse;
    public class Mytest {
    	public static void main(String[] args) throws Exception {
    		MobileOAWcfServiceStub service = new MobileOAWcfServiceStub();
    		//注意,这里这句代码一定不能少<span style="color:#ff6666;">
    		service._getServiceClient().engageModule("addressing");</span>
    		GetNewsDetail getNewsDetail = new GetNewsDetail();
    		getNewsDetail.setNewsGuid("e87d2aa3-d1c8-4362-aaaa-ffd233060533");
    		GetNewsDetailResponse response = service.getNewsDetail(getNewsDetail);
    		String result = response.getGetNewsDetailResult();
    		System.out.println(result);
    	}
    }
    上面代码中的红色标记不能少,上了会报异常
  • Exception in thread "main" org.apache.axis2.AxisFault: Must Understand check failed for header http://www.w3.org/2005/08/addressing : Action
    	at org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngine.java:105)
    	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:171)
    	at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:364)
    	at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
    	at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    	at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    	at com.webservice.hb2012.client.MobileOAWcfServiceStub.getNewsDetail(MobileOAWcfServiceStub.java:1689)
    	at com.test.Mytest.main(Mytest.java:13)

  • OK,通过这样就可以直接使用Stub.java文件了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值