阅读 44 SEO

webService 制作简单demo(webservice接口开发教程)

制作demo

服务端

定义一个webService接口.使用@WebService注释,想要通讯的方法使用@WebMethod

@javax.jws.WebService public interface WebService {     @WebMethod     String hello(String name); } 复制代码

实现类 : 使用@WebService注释

@javax.jws.WebService public class WebServiceImpl implements WebService{     @Override     public String hello(String name) {         System.out.println("请求成功");         name += "访问成功";         return name;     } } 复制代码

执行.将webService服务启动到指定网址

public class PublishWebService {     public static void main(String[] args) {         String address = "<http://localhost:8181/service/webService>";         Endpoint.publish(address,new WebServiceImpl());         System.out.println("发布成功");     } } 复制代码

客户端

通过idea可以自动生成客户端代码

在执行下面的操作前,需要将鼠标锁定到输出目录

image.png

url 即服务端的网址,需要在后面加上?wsdl

image.png

生成成功,输出的目录在client,结构如下图

image.png

如何调用:

具体的调用流程如左图,代码流程如右图

image.png

image.png

调用生成的客户端代码流程

public class ClientService {     public static void main(String[] args) {         // 创建wsd文档中的service的name         WebServiceImplService service = new WebServiceImplService();         // 创建 portType的name         WebServiceImpl webServiceImplPort = service.getWebServiceImplPort();         // 执行 opration中的name         String yzy = webServiceImplPort.hello("yzy");         System.out.println(yzy);     } } 复制代码

返回结果

image.png

探索出入参

点进hello方法,接口中规定了入参类型和出参类型

image.png

这两个其实就是通讯方法入参出参的String类型封装了一下

image.png

更换出入参

为了验证我的猜想是不是正确的,可以将通讯方法中的String改成自定义类.

//通讯方法 public Animal trans(User user) {         Animal animal = new Animal();         String sex = user.isSex()==true?"公":"母";         animal.setType(sex +" : "+ user.getName());         LocalDate now = LocalDate.now();         animal.setBirthYear(now.minusYears(user.getAge()).getYear());         return animal;     } 复制代码

重新启动后,wsdl文档如下

image.png

Trans入参里面就有一个User. Trans即入参合集,因为可能有多个入参.

User和我们创建的一模一样

image.png

客户端调用接口

// 客户端调用通讯方法 public static void main(String[] args) {         // 创建wsd文档中的service的name         WebServiceImplService service = new WebServiceImplService();         // 创建 portType的name         WebServiceImpl webServiceImplPort = service.getWebServiceImplPort();         // 执行 opration中的name         User user = new User();         user.setAge(22);         user.setName("yzy");         user.setSex(true);         Animal trans = webServiceImplPort.trans(user);         System.out.println(JSONObject.toJSONString(trans));     } 复制代码

![image.png](p9-juejin.byteimg.com/to「这是我参与11月… "juejin.cn/post/702364…?)

把通讯方法的入参改成三个

Animal trans(User user,String name,int age); 复制代码

trans 就会有三个参数.

image.png


作者:顽疾
链接:https://juejin.cn/post/7029615855348482061


文章分类
代码人生
文章标签
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 gxwowoo@163.com 举报,一经查实,本站将立刻删除。
相关推荐