webService 的使用

版权声明:欢迎大家观看。希望对大家有所帮助。如需转载,请注明出处。谢谢。博主QQ:337081267.欢迎拍砖! https://blog.csdn.net/pyfysf/article/details/82193977

webService

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

为什么要使用webService

概念理解 SOAP WSDL

SOAP (Simple Object Access Protocol):简单对象访问协议

  • SOAP作为一个基于XML语言的协议用于在网上传输数据。
  • SOAP = 在HTTP的基础上+XML数据。
  • SOAP是基于HTTP的。
  • SOAP的组成如下:
  • Envelope – 必须的部分。以XML的根元素出现。
  • Headers – 可选的。
  • Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。

HTTP与SOP的对比

WSDL Web服务描述语言

WSDL(WebService Description Language):web 服务描述语言
就是一个xml文档,用于描述当前服务的一些信息(服务名称、服务的发布地址、服务提供的方法、方法的参数类型、方法的返回值类型等)

调用网络上提供的WEBService —— 请求示例 获取手机号码归属地

http://www.webxml.com.cn/zh_cn/index.aspx 提供了一些webService服务

1.服务地址
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx
2.查看wsdl文档
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
3.通过jdk自带的工具 解析wsdl文档生成对应的java代码
wsimport -s . http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
命令:wsimport -s . [wsdl URL]

图片点击可以放大
这里写图片描述

新建普通java工程,将生成的代码copy到项目中,书写测试类方法,调用远程webService方法

/**
 * 远程调用WebService
 * 
 * @author pyfysf
 *
 */
public class TestPhoneAddress {
    @Test
    public void getPhoneAddress() {
        MobileCodeWS mobileCodeWS = new MobileCodeWS();

        MobileCodeWSSoap soap = mobileCodeWS.getMobileCodeWSSoap();

        String mobileCodeInfo = soap.getMobileCodeInfo("1886363", "");

        System.out.println(mobileCodeInfo);

        //控制台打印结果为: 1886363:山东 潍坊 山东移动全球通卡

    }
}

基于jdk发布一个WebService服务

服务端编写
  • 第一步:创建一个Java项目
  • 第二步:创建一个类,加入Webservice注解
  • 第三步:提供一个方法introduceOneself
  • 第四步:在main方法中调用jdk提供的发布服务的方法

服务端完整代码:

package top.wintp.webserviceservice;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class WebServiceServiceDemo {
    /**
     * webService提供的一个普通方法
     * 
     * @return
     */
    public String introduceOneself() {

        return "pyfysf: blog is http://wintp.top";
    }

    public static void main(String[] args) {
        String address = "http://127.0.0.1:9080/introduceOneself";

//      WSDL 地址是固定的: 服务地址 + ? + wsdl
//      http://127.0.0.1:9080/introduceOneself?wsdl

        Object implementor = new WebServiceServiceDemo();
        // 发布服务  线程堵塞 监听客户端请求 
        Endpoint.publish(address, implementor);

    }

}
jdk中wsimport命令使用、

作用:解析wsdl文件,生成客户端本地代码
wsimport

客户端编写
  • 第一步:使用wsimport命令解析wsdl文件生成本地代码
  • WSDL: wsimport -s . http://127.0.0.1:9080/introduceOneself?wsdl
  • 第二步:通过本地代码创建一个代理对象
  • 第三步:通过代理对象实现远程调用

服务端完整代码:


public class Demo {
    @Test
    public void introduceOneself() {
        WebServiceServiceDemoService ws = new WebServiceServiceDemoService();

        // 创建客户端的代理对象
        WebServiceServiceDemo wsPort = ws.getWebServiceServiceDemoPort();

        String introduceOneself = wsPort.introduceOneself();

        System.out.println(introduceOneself);

        // 控制台打印结果: pyfysf: blog is http://wintp.top

    }

}

猜你喜欢

转载自blog.csdn.net/pyfysf/article/details/82193977