Java调用webservice接口方式

以前只听说过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接口就完成了。剩下的就是联调工作

猜你喜欢

转载自dove19900520.iteye.com/blog/2214596
今日推荐