美文网首页程序员
手把手教你java axis调用异构系统、平台(.net)的We

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

作者: 李逍遥2018 | 来源:发表于2018-12-02 07:51 被阅读1次

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或其他的工具、实现已经替我们解决了。

相关文章

网友评论

    本文标题:手把手教你java axis调用异构系统、平台(.net)的We

    本文链接:https://www.haomeiwen.com/subject/wpgdcqtx.html