手把手教你java axis调用异构系统、平台(.net)的WebService

WebService是一种实现异构系统之间的方法互相调用的传统经典开发技术,常见的各种平台基本上都支持WebService,包括java,c++,.net,delphi等。但不同的语言和平台上的数据类型是不一样的,那又如何实现异构平台之间的webservice调用呢?本文将以java调用.net实现的webservice为例加以说明。

java平台有多种webservice的实现,常见的有cxf(前身为xfire),axis,axis2及java(java9)平台自带的SOAPConnectionFactory实现webservice的调用。其中,cxf非常容易与spring整合,通常用于解决同种java平台上的不同业务系统之间的webservice调用,而axis通常用于实现异构平台上不同系统之间的webservcie的调用。这里,将以axis生成Stub调用.net实现的WebService.

一、调用webService的基本原理

调用外部系统的webservice时,外部系统会提供一个WebService的接入地址,如http://xxx.xx.xxx.xx/NewJianGuanWebService/NewOutProvinceService.asmx,

调用者则要根据此地址,生成远程WebService的本地代理,再通过本地代理去调用远程的webservice里的方法。听起来有点费解,简单说,根据webservice的

地址,生成Stub程序,然后调用Stub的方法。Stub是什么?术语可以叫骨架程序。是不是一头雾水?- -!大家可以直接把Stub理解为根据webservice地址生成

的Client。调用stub这个client的方法时,就相当于调用了远程WebService服务的方法。

二、axis实现调用.net的webservice

    原理大家都知晓了,But how to do?

首先搭建一个java开发环境, jdk 1.8或更高,eclipse版本在eclipse_mars_2以上,过程从略。

接下来新建一个普通的java工程或maven工程,笔者建立的普通工程(偷懒),如下


接下来,在src上右键--new--other,选择webservices下面的Web Service Client,如图


    点击next,如下图输入webservice接入地址,选择client type,点击next


点击finish生成的webservice stub代码如下


如果你打开看这些文件,仔细的、认真的阅读生成的调用webService的代码,一定要认真仔细地看!小样儿,看不晕你!

其实,这几个文件里,你真正关注的、调用的是NewOutProvinceServiceSoapStub,所有的webservice的方法,都在这个文件里。

接下来写个main()方法,里面写

NewOutProvinceServiceSoapStub sub = NewOutProvinceServiceSoapStub();

String hello = sub.helloworld();

System.out.println("----->:" + hello);

我保证你的代码多半会报错,报错信息大约是:

发生的报错信息为:

AxisFault

faultCode: {http://xml.apache.org/axis/}Server.NoEndpoint

faultSubcode:

faultString: No endpoint

正确的方式是这样的,如图这样写就可以了,运行看结果。


三、总结

真心没啥总结的了,异构系统的数据类型问题一般都是通过xml等进行数据转换的,而这些事情axis或其他的工具、实现已经替我们解决了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 想你的时候 我就象一株苦楝树 苦苦地立在你的窗前 想你 做我的树根 递给我的叶脉以情愫 以快乐的舞蹈 忘却孤独 梦...
    失业猎手阅读 535评论 0 1
  • 12月3日,2016年中国(苏州)数字经济与创新发展大会在苏州工业园区开幕,本次大会由国家发改革委、江苏省人民政府...
    普实软件阅读 558评论 0 3
  • 今天下午群里发布的任务是使用js计算10000以内的回文数,我借鉴了以前练习过的c++的算法写了一个。 运行结果如...
    changhr2013阅读 2,594评论 0 0