WebService学习笔记(一)JDK自带JAX-WS

WebService 三要素

soap
SOAP即简单对象访问协议(Simple Object Access Protocal) 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息.
简单理解为soap=http+xml,就是通过HTTP发xml数据
Soap协议版本主要使用soap1.1、soap1.2。
SOAP不是webservice的专有协议,其他应用协议也使用soap传输数据。例如,SMTP。
Wsdl
WSDL 是基于 XML 的用于描述Web Service及其函数、参数和返回值。通俗理解Wsdl是webservice的使用说明书

Uddi

UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。企业将自己提供的Web Service注册在UDDI,也可以使用别的企业在UDDI注册的web service服务,从而达到资源共享。
UDDI旨在将全球的webservcie资源进行共享,促进全球经济合作。
目前大部分企业使用webservice并不是必须使用UDDI,因为用户通过WSDL知道了web service的地址,可以直接通过WSDL调用webservice

实现方式之一 (JAX-WS)

JAVA 中共有三种 实现WebService 开发规范JAX-WS(JAX-RPC)、JAXM & SAAJ、JAX-RS

JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(Java API For XML-Remote Procedure Call)目前已经被JAX-WS 规范取代。

服务端实现
一、编写服务接口
在这里插入图片描述
二、编写服务实现
在这里插入图片描述
三、发布服务
在这里插入图片描述
客户端实现

  • 方式一:客户端方式

一、在项目目录下使用wsimport命令通过wsdl(说明书)生成客户端类
在这里插入图片描述
生成结果:
在这里插入图片描述
二、调用服务
在这里插入图片描述
结果:
在这里插入图片描述

  • 方式二:HTTPURLConnection方式

    /**

    • 1.创建url

    • 2.通过url获取连接

    • 3.设置请求头参数

    • 4.发送请求

    • 5.接受响应数据

    • 6.关流
      */
      public class ReceiveData2 {
      public static void main(String[] args) throws Exception {
      //创建url
      URL url = new URL(“http://127.0.0.1:8888/weather?wsdl”);
      //创建连接
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
      //设置请求参数
      urlConnection.setRequestMethod(“POST”);
      urlConnection.setDoOutput(true);
      urlConnection.setRequestProperty(“Content-Type”, “application/soap+xml;charset=utf-8”);
      //发送请求
      OutputStream os = urlConnection.getOutputStream();
      os.write(requestData(“天津”).getBytes());
      //接受数据
      InputStream is = urlConnection.getInputStream();
      byte [] by = new byte[1024];
      for(int len = 0;(len = is.read(by)) != -1;){
      System.out.println(new String(by,0,len,“utf-8”));
      }
      //释放资源
      os.close();
      is.close();
      }

      private static String requestData(String cityName) {
      return “<?xml version=\"1.0\" ?><S:Envelope xmlns:S=“http://www.w3.org/2003/05/soap-envelope”><S:Body><ns2:getCityWeather xmlns:ns2=“http://impl.service.web.gu.com/”>”+cityName+"</ns2:getCityWeather></S:Body></S:Envelope>";
      }
      }
      结果:

<?xml version="1.0" ?>

velope xmlns:S=“http://www.w3.org/2003/05/soap-envelope”><S:Body><ns2:getCityWeatherResponse xmlns:ns2=“http://impl.service.web.gu.com/”>天津:大雾-雾霾-小雪转大雪转暴雪:-12°</ns2:getCityWeatherResponse></S:Body></S:Envelope>

猜你喜欢

转载自blog.csdn.net/qq_43701801/article/details/89489357
今日推荐