zoukankan      html  css  js  c++  java
  • WebService学习笔记系列(一)

    webservice主要是解决两个系统或者两个应用程序之间的远程调用,它提供了一种通过web方式访问的api,调用是跨语言、跨平台的。
    webservice的客户端与服务端进行交互的时候使用xml来传递数据。
    soap协议,即简单对象访问协议,它是webservice的客户端与服务端进行交互的时候遵守的一个协议。

    在服务端调用webservice服务时,我们可以通过Java jdk自带的一个命令wsimport,根据服务说明书生成本地Java代码,我们直接操作这些Java代码就可以调用webservice.
    wsimport -d . wsdl地址 生成本地class文件
    wsimport -s . wsdl地址 生成本地java文件,
    wsimport -s . -p 包名 wsdl地址 生成本地java文件,并且指定包名
    然后直接操作这些Java文件来调用服务端程序。
    来看一段代码:
    在服务端发布一个类:

    发布程序,运行main方法,即表示发布:

    public class PublishService {
    
        public static void main(String[] args) {
            //java提供了一个专门的类,用来用来将一个Java应用程序发布成webservice
            /**
             * 两个参数,分别是
             * 1.服务类对外的访问地址
             * 2.服务类的一个实例
             */
            Endpoint.publish("http://127.0.0.1:8888/helloService", new HelloService());
        }
    }

    所发布的类:

    //被发布的类上面必须有@WebService注解
    @WebService
    public class HelloService {
    
        /**
         * 被发布的类中必须包含一个非静态的,非final的public方法
         */
        public void helloWebService(){
            System.out.println("hello webservice!");
        }
    
        public User getUser(){
            return new User("张三","zhangsan");
        }
    }

    User.java

    public class User {
    
        private String username;
        private String nickname;
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getNickname() {
            return nickname;
        }
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
        public User(String username, String nickname) {
            this.username = username;
            this.nickname = nickname;
        }
    }

    通过wsimport获得服务器端的类:
    这里写图片描述
    成功获得服务器端的类,在F盘可以看到这些类,然后新建一个客户端project,把这些类拷贝进去,在客户端直接操作这些类就可以访问服务端程序:
    客户端程序:

    public class MyTest {
    
        public static void main(String[] args) {
            HelloService helloService = new HelloServiceService()
                    .getHelloServicePort();
            User user = helloService.getUser();
            System.out.println(user.getNickname()+","+user.getUsername());
        }
    }

    客户端输出:

    这里写图片描述
    成功拿到服务端数据。

    如果调用helloWebService()方法

    public class MyTest {
    
        public static void main(String[] args) {
            HelloService helloService = new HelloServiceService()
                    .getHelloServicePort();
            helloService.helloWebService();
        }
    }

    则服务端输出:

    这里写图片描述
    成功调用服务端。
    如果要传递视频,音频图片等消息,可以通过InputStream和OutputStream来实现。
    这是通过wsimport的方式来调用服务端程序,下一篇我们看另外一种调用方式。

  • 相关阅读:
    codeforces C. Cows and Sequence 解题报告
    codeforces A. Point on Spiral 解题报告
    codeforces C. New Year Ratings Change 解题报告
    codeforces A. Fox and Box Accumulation 解题报告
    codeforces B. Multitasking 解题报告
    git命令使用
    shell简单使用
    知识束缚
    php 调用系统命令
    数据传输方式(前端与后台 ,后台与后台)
  • 原文地址:https://www.cnblogs.com/lenve/p/4517994.html
Copyright © 2011-2022 走看看