最近做机场项目,对接一个webService接口,以前从来没做过类似的对接的,就记录一次,给自己一次学习的机会
http://xxxxxxxx:7190/esb/proxy/ws/TOMS_FWZXCLSJ/capairport/ws/gaugeWebService?wsdl
首先对方只提供了wsdl的一个地址信息,没有其他的信息了,完事就通知可以进行对接了。
由于自己没有对接过类似的,刚一开始走了很多弯路。先出下正确的处理结果
1、首先根据地质生成本地代码
采用java原生JDK命令:(执行命令目录jdk1.8\bin ,这个主要根据自己本地JDK安装)
wsimport.exe -s E:\data\webservice\ http://xxxxxx/gaugeWebService?wsdl
wsimport.exe 命令没啥说的
-s 一定要打这个,生成源码文件,不然就是class文件了
E:\data\webservice\ 指定生成的文件存放位置
url wsdl地址
生成的结果:
2、使用这些生成的结果
首先根据wsdl结果说明下:
入口:<wsdl:service name="IGaugeService">
执行:<wsdl:portType name="IGauge">
有哪些方法:<xs:element name="******" type="tns:HeartBeat"/>
定义了哪些实体类:<xs:complexType name="*****">
java代码调用示例:
public static SemsRS getAreaList() throws Exception {
IGaugeService service = new IGaugeService();
IGauge iGaugePort = service.getIGaugePort();
SemsRQ semsRQ = new SemsRQ();
semsRQ.setSEMSTYPE("DICTIONARY");
semsRQ.setSEQN("110");
semsRQ.setSNDR("CSMS");
SemsCondition semsCondition = new SemsCondition();
semsRQ.setSEMSCONDITION(semsCondition);
return iGaugePort.getGaugeData(semsRQ);
}
到此为止就完成了对接!!!!!
博客中可能有一些地方给的信息不是很明确,因为有一些感觉不是很重要或者涉及到一些实际接口地址问题就不暴露了。
主要重点:
由于地址一般都会区分生产地址和测试地址,所以要记得修改下对应的信息,主要涉及到的:
1、WSDL接口地址的配置,主要在入口类,
2、包路径地址,生成的主要在一个接口文件中,执行文件中
对于这次的对接,自己走了不少弯路,百度了不少,但是自己出发点是 java调用webService的思路走的,导致自己各种方式方法调用,最后都是遇到各种走不通和耗时耗力的方案,遇到的问题大致的有对象套对象的接触不适应、调用结果返回不明确的1......
在请教过同事后,一语点醒了我,WSDL本身可以生成对应的java代码,完事直接用就可以。这之前是真不知道哈。
慢慢给自己积累。