项目背景
接到的任务是通过调用其他平台厂商提供的webservice接口来获取他们的图片数据把图片下载下来录入我司平台。之前没有接触过webservice,所以开始了这次webservice的菜鸟之旅。
一.首先去百度查了查简单搭建了一个webservice的服务端和客户端的小demo,用来了解它的工作流程
服务端搭建
1.新建一个java项目,目录如下
2.新建个类,加注解@WebService,主要内容如下
package webservice_serverDemo;import javax.jws.WebMethod;import javax.jws.WebService;import javax.xml.ws.Endpoint;@WebService ?public class Test { ???/** 供客户端调用方法 ?该方法是非静态的,会被发布 ????* @param name ?传入参数 ????* @return String 返回结果 ????* */ ???public String getValue(String name){ ???????return "欢迎你! "+name; ???} ???/** ????* 方法上加@WebMentod(exclude=true)后,此方法不被发布; ????* @param name ????* @return ????*/ ???@WebMethod(exclude=true) ?????public String getHello(String name){ ???????return "你好! "+name; ???} ???/** 静态方法不会被发布 ????* @param name ????* @return ????*/ ???public static String getString(String name){ ???????return "再见!"+name; ???} ???//通过EndPoint(端点服务)发布一个WebService ??public static void main(String[] args) { ???/*参数:1,本地的服务地址; ?????????2,提供服务的类; ????*/ ???Endpoint.publish("http://127.0.0.1:8080/Test", new Test()); ???System.out.println("发布成功!"); ???//发布成功后 在浏览器输入 http://localhost:8080/Test?wsdl ??}}
3.运行主方法,控制台显示发布成功
4.浏览器输入 http://localhost:8080/Test?wsdl 可以看到生成的wsdl文件,服务端搭建完毕
客户端搭建
1.新建一个java工程
2.点击工程右键>New>Other>Web service client>填写wsdl地址如下图(确保服务端不要关闭,浏览器访问地址能看到xml)也可以填写的是一个wsdl文件的路径
finish之后就会发现在src下生成了客户端的文件夹和java类,这时候就可以在客户端调用接口了
调用一下试试
package webservice_serverDemo;import java.rmi.RemoteException;import java.util.Iterator;import javax.xml.rpc.ServiceException;public class Hello { ???public static void main(String []args) throws RemoteException, ServiceException{ ???????TestServiceLocator test = new TestServiceLocator(); ???????Test ports = test.getTestPort(); ???????System.out.println(ports.getValue("小娜")); ???}}
控制台输出,可以看到有一个警告是因为缺少mail.jar和activation.jar,可以自己下载,不加也没有特别大的影响
回归到项目
通过上面的小demo可以看出,eclipse能根据wsdl自动生成客户端来调用,非常简单。but,通过平台厂商反馈的wsdl文件发现,由于他们系统十分老旧,生成的wsdl无法用这种方法生成客户端,于是换了一种方法,使用axis1.4生成客户端
1.下载axis-bin-1_4.zip jar包,解压
2.进入lib目录下打开cmd 运行
D:\soft\axis-1_4\lib>java -Djava.ext.dirs=D:\soft\axis-1_4\lib org.apache.axis.wsdl.WSDL2Java -o D:\zhuhai -p com.ws D:\soft\axis-1_4\RequestService.wsdl
//java -Djava.ext.dirs=${lib的目录} org.apache.axis.wsdl.WSDL2Java -o${代码输出路径} -p${package名} ${wsdl的路径(可以是绝对路径或者url)}
会报一个这个警告,没有关系,上面提过
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
3.去${代码输出路径}里可以找到生成的客户端
webservice 菜鸟探索之旅
原文地址:https://www.cnblogs.com/yuxiaona/p/9264908.html