以前只听说过webservice,从来没有真正的接触过,今天有个工单,要掉接口,接过来发现是weiservice的,瞬间凌乱啊。
网上搜了好多的资料,感觉都太笼统,没有什么具体的步骤,下面我便把我自己的具体实践步骤记录一下,供那些初次使用webservice(java版)的童鞋一个借鉴。如有问题,还请大神多多指教。。。。。。。。
1、接口地址:
http://IP:8080/MediaInterface/BaseInfoService.svc
将该地址在浏览器中输入,然后会出现一个页面,找到其中的一个含有wsdl的URL,本接口中的URL为:
http://IP:8080/MediaInterface/BaseInfoService.svc?wsdl
2、利用上面地址,生成调用接口的java代码
首先需要axis的jar包,我下载的是axis-bin-1_4.zip
然后解压该zip包,然后在axis加压后的文件夹下,编写一bat脚本文件(windows系统下),具体代码如下:
set Axis_Lib=C:\Users\Administrator\Desktop\axis-1_4\lib set Java_Dir=C:\Java\jdk1.6.0_10\bin set ava_Cmd=%Java_Dir%\java -Djava.ext.dirs=%Axis_Lib% set Output_Path=C:\Uses\Administrator\Desktop\axis-1_4\src set Package=com.ubs.ws %Java_Cmd% org.apache.axis.wsdl.WSDL2Java http://IP:8080/MediaInterface/BaseInfoService.svc?wsdl -o%Output_Path% -p%Package% -t Pause
里面的参数,根据自己机器的具体情况,自行配置
切记,地址配置中一定不要含有空格
如果运行正确,没有报错的话,会在axis文件夹下生成一个src目录,然后里面就是你想要的java类了。
BaseInfoService.java
BaseInfoServiceLocator.java
BaseInfoServiceTestCase.java(这个是个junit测试工具类,可以不要)
BasicHttpBinding_IBaseInfoServiceStub.java
IBaseInfoService.java
3、调用接口,开始联调
将生成的java类,复制到自己的项目中,当然,肯定用缺少很多jar包,需要自己根据报错信息,自行下载并添加(要有耐心)。
调用代码:
BasicHttpBinding_IBaseInfoServiceStub baseInfoServiceStub = new BasicHttpBinding_IBaseInfoServiceStub(); baseInfoServiceStub.syncSaleClues("ddd"); System.out.println(str);
这样调用的话,会报出如下异常:
Exception in thread "main" AxisFault faultCode: {http://xml.apache.org/axis/}Server.NoEndpoint faultSubcode: faultString: No endpoint faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}exceptionName:org.apache.axis.NoEndPointException {http://xml.apache.org/axis/}stackTrace:No endpoint at com.china.ubs.ws.BasicHttpBinding_IBaseInfoServiceStub.syncSaleClues(BasicHttpBinding_IBaseInfoServiceStub.java:1084) at com.china.ubs.ws.TestClass.test(TestClass.java:34) at com.china.ubs.ws.TestClass.main(TestClass.java:25) {http://xml.apache.org/axis/}hostname: No endpoint at com.china.ubs.ws.BasicHttpBinding_IBaseInfoServiceStub.syncSaleClues(BasicHttpBinding_IBaseInfoServiceStub.java:1084) at com.china.ubs.ws.TestClass.test(TestClass.java:34) at com.china.ubs.ws.TestClass.main(TestClass.java:25)
通过查找发现,应该这么写:
BaseInfoServiceLocator service = new BaseInfoServiceLocator(); BasicHttpBinding_IBaseInfoServiceStub baseInfoServiceStub = (BasicHttpBinding_IBaseInfoServiceStub)service.getBasicHttpBinding_IBaseInfoService(); String str = baseInfoServiceStub.syncSaleClues("ddd"); System.out.println(str);
这样调用java调用webservice接口就完成了。剩下的就是联调工作