WebService学习(wsdl文件详解,soapUI学习)

Holy_Java 2024-07-09 10:33:03 阅读 61

目录

第一章、Web Service介绍1.1)Web Service技术介绍1.1.1)Web Service作用和分类1.1.2)如何做到跨平台通信1.1.3)Java的Web服务API

1.2)Web服务发布与Web服务部署1.2.1)Web Service部署过程介绍1.2.2)Web服务发布1.2.3)发布与部署的区别

第二章、使用JAX-WS发布Web服务2.1)导入依赖2.2)添加注解@WebService并将接口发布2.3)访问WSDL链接,保存内容2.4)SOAPweb服务与RESTful风格的web服务区别

第三章、WSDL文件详解3.1)wsdl地址(URL链接的含义)3.2)WSDL文件的作用3.3)如何阅读wsdl文档?3.4)通过wsdl文件生成客户端代码(Java代码)3.5)生成Java代码包含哪些内容?有什么作用3.6)生成的Java类集成到项目中并访问Web服务

第四章、soapUI测试工具学习4.1)SOAP协议介绍4.2)soapUI下载安装4.3)soapUI用wsdl链接调用soap接口

之前写的太简陋了,痛腚思痛,重新再版

先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。声明:部分内容为AI创造

第一章、Web Service介绍

1.1)Web Service技术介绍

1.1.1)Web Service作用和分类

作用:

Web Service就是网络服务,一种使用 HTTP/HTTPS 协议数据的远程调用技术,是能使不同应用程序能够通过网络进行通信和数据交换的技术。 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。

Web Service部署完后可以通过URL(例如网址)访问Web服务。比如我们使用百度搜索的网址(URL)时,实际上就是在访问百度的Web服务。百度搜索是百度通过Web服务提供搜索功能。

分类

Web Service通常分为两种类型:

1、SOAP Web服务: 基于XML格式消息和SOAP协议来进行通信,通常基于HTTP或SMTP等协议。它们通常使用WSDL来描述服务接口。

2、RESTful Web服务: 基于HTTP协议的软件架构风格,使用HTTP方法(如GET、POST、PUT、DELETE)来进行通信,并使用URI(统一资源标识符)来定位资源。它们通常使用JSON格式来传输数据,不需要像SOAP那样定义严格的消息格式。

1.1.2)如何做到跨平台通信

①使用通用的数据交换格式:XML(可扩展标记语言)和JSON(JavaScript对象表示法)不同平台和语言开发的应用程序都能解析和生成这些数据。

②采用标准的通信协议:HTTP是Web上使用最广泛的协议,它支持跨平台通信。

③利用WebService三要素:

1、SOAP(简单对象访问协议):一种基于XML的协议,用于在网络上交换结构化信息。

2、WSDL(Web服务描述语言):用于描述Web服务和其公开的接口的XML格式。WSDL文件提供了服务的详细信息。

3、UDDI(描述、发现和集成Web服务的标准)。UDDI包括两个主要部分:Web服务和业务注册表。Web服务的所有者将它们发布到UDDI注册表中,客户端可以搜索该注册表,找到所需的服务,并检索其详细信息。

1.1.3)Java的Web服务API

JAX-WS:Java API for XML Web Services,用于构建Web服务服务器和客户端应用程序。

JAX-RS:Java API for RESTful Web Services,用于创建REST Web服务。

1.2)Web服务发布与Web服务部署

1.2.1)Web Service部署过程介绍

部署WebService通常指的是将WebService应用程序部署到Web容器或应用服务器中,以便可以通过网络访问。

①构建Web Service:编写符合标准和规范的代码(比如Java代码)

②打包Web Service:将Web Service打包成WAR文件或EAR文件。

③部署到Web容器:将打包好的Web Service部署到目标Web容器中(比如tomcat服务器,用于托管和运行Web应用程序的服务器环境,处理HTTP请求、执行Servlet和JSP等Web组件)

④验证部署:通过相应的URL进行访问Web服务,确保它可以被其他系统或客户端访问和调用。

1.2.2)Web服务发布

部署和发布的区别:

发布是将WebService的描述信息(如WSDL文件)公开,使人了解WebService的功能和使用。

发布Web服务通常意味着发布WSDL文件。通过提供WSDL链接,其他开发人员可以使用该链接来生成客户端代码,并调用Web服务。

什么情况下我们需要发布Web服务:

远程访问:发布方希望其他系统或应用能够访问和使用自己系统中特定功能或数据时,可以将该功能或数据封装为Web服务,并将其发布出去。以便调用方可以通过标准的Web服务协议进行访问和调用。

1.2.3)发布与部署的区别

发布是为了准备软件的最终版本,使其可以被用户访问,而部署则是将发布的软件安装到目标环境中,以便用户可以使用。

第二章、使用JAX-WS发布Web服务

JAX-WS是Java API for XML Web Services的缩写,使用它可以在标准的Java应用程序中开发和发布Web服务,而不需要依赖于web容器(tomcat)。

2.1)导入依赖

在pom文件中添加JAX-WS依赖

<code> <dependency>

<groupId>com.sun.xml.ws</groupId>

<artifactId>jaxws-rt</artifactId>

<version>2.3.3</version>

</dependency>

2.2)添加注解@WebService并将接口发布

①需要生成的类上,加上@WebService注解,在方法上加上@WebMethod注解。作用是标识该实现类是webservice的服务类,发布该实现类的public方法

②使用EndPoint类中的publish()方法发布。

第一个参数为浏览器需要调用的地址,第二个参数是要发布的类。

import javax.jws.WebMethod;

import javax.jws.WebService;

import javax.xml.ws.Endpoint;

@WebService

public class HelloWorldService {

@WebMethod

public String sayHello(String name) {

return "Hello, " + name;

}

public static void main(String[] args) {

// 发布Web服务第一个参数为浏览器需要调用的地址

Endpoint.publish("http://localhost:8080/hello", new HelloWorldService());

System.out.println("Web服务已发布,地址:http://localhost:8080/hello,wsdl地址:http://localhost:8080/hello?wsdl");

}

}

2.3)访问WSDL链接,保存内容

运行main方法,浏览器访问wsdl链接,测试服务是否发布成功

访问wsdl方式为地址http://localhost:8080/hello拼接上 ?wsdl

http://localhost:8080/hello?wsdl

访问成功:返回wsdl文件

在这里插入图片描述

2.4)SOAPweb服务与RESTful风格的web服务区别

①1、基于SOAP的Web服务的接口、消息格式和操作,依赖于WSDL来调用。

2、客户端手动构建SOAP消息,并通过HTTP POST请求方式直接调用SOAP服务。需要客户端对SOAP协议和消息格式有一定的了解。

3、使用一些SOAP客户端库,这些库可以帮助客户端更方便地构建和发送SOAP消息,而无需直接依赖于WSDL文件。

②RESTful风格的Web服务通常使用HTTP方法(如GET、POST、PUT、DELETE)来进行交互,而不需要像SOAP服务那样依赖于WSDL。

很明显:RESTful调用更轻松简单,所以SOAP慢慢被淘汰了。

第三章、WSDL文件详解

3.1)wsdl地址(URL链接的含义)

wsdl地址,类似于下面这种后面拼个?wsdl的链接:

<code>http://127.0.0.1:8080/xxxx/hello?wsdl

访问一下这个链接http://127.0.0.1:8080/xxxx/hello?wsdl,可以获得一个WSDL文件,文件内容为XML格式:

在这里插入图片描述

3.2)WSDL文件的作用

WSDL是XML格式的文档,有以下作用:

①标准化描述web服务

WSDL是用XML的语言来标准化描述Web服务的描述语言(Web Services Description Language的缩写),文件内容为xml格式,以<code>.wsdl结尾。用于描述如何访问特定的Web服务以及如何与其进行交互。包括web服务的具体功能接口(调用方式、输入参数、输出参数以及相关的消息格式)。

②发现可用的Web服务

描述Web服务的端点(endpoint)即客户端可以访问的服务位置,以及使用的通信协议和绑定信息。(可以将端口视为Web服务的端点)。

③定义通信协议和消息格式

描述客户端和服务端之间交换的消息的结构和格式,以便双方能够理解和解析这些消息。对于分布式系统和跨平台集成非常重要。

④生成客户端代码(Java代码)

WSDL文档可以用来生成客户端代码(Java代码),以便与Web服务进行通信。

3.3)如何阅读wsdl文档?

WSDL文档元素阅读顺序如下:从文档最下放找到service节点然后按如下的顺序往上看

元素介绍:

1、服务(service)节点:定义了Web服务的具体网络地址(Endpoint),也就是服务的URL。

service标签包含了服务端端口(port)属性对应

2、服务端口(port)节点:通常包含Binding属性:将抽象操作映射到具体的通信协议和消息格式,例如SOAP协议。通过Binding属性找到binding节点

3、绑定(Binding):binding节点中包含具体的绑定信息,含有type属性。

通过type属性找到相关联的端口节点(portType)

4、端口类型(PortType)节点:可以理解为一个类,一个接口。

PortType里定义包含了多个操作(operation )节点

5、操作(operation)节点: 相当于该类里有一个方法,name就是方法名称。

operation 包含了input节点,output节点,和fault节点(不常用)

6、输入输出(Input和output)节点:input节点对应了Web服务的输入消息即参数的定义。

output节点对应了Web服务输出消息即返回值的定义。

他们有个属性叫做message,通过message属性找到对应message节点。

7、消息(message)节点:描述了消息的组成部分,即消息的参数和类型。

一个消息包含多个part节点可以传递一个或者多个参数。

8、消息组成(part)节点:part是消息的组成部分,多个part组成一个消息。

part包含属性element对应(element)节点。

9、元素(element)节点:定义了数据的类型。通过name属性定义参数的名称,通过type属性定义参数的类型。

3.4)通过wsdl文件生成客户端代码(Java代码)

只要安装了JDK1.6以上版本就可以通过wsimport命令使WSDL文件生成Java代码(客户端代码)以便客户端可以访问已发布的Web服务。wsimport命令来自JAX-WS,它是JDK 1.6及以上版本的一部分。

示例:

wsimport -s D:\workspace\src -p main.java.com.tools -encoding utf-8 -keep http://localhost:8080/HelloWorld?wsdl

-s选项:指定生成的Java源文件的绝对路径,一般都是src结尾

-p选项:指定生成的Java代码文件的目录(生成代码所在包名,也就是项目中src后面的目录)

-keep选项:表示保留生成的Java源文件在指定的输出目录中,而不会将其删除。

URL地址:是WSDL文件的地址。

通过本地wsdl文件生成java代码,用的较少

wsimport -s D:\workspace\src -p main.java.com.tools -encoding utf-8 -keep fileName.wsdl

3.5)生成Java代码包含哪些内容?有什么作用

这些Java代码包括用于调用服务的框架和类。这些生成的类将充当客户端与服务端进行通信的接口。可以用于创建客户端,在Java应用程序中调用远程Web服务的方法,并处理返回的数据。

生成的Java代码通常包括以下内容:

Service接口文件:包含了Web服务的方法定义和参数信息。通常以Service结尾,比如HelloWorldService.java。

代表Web服务接口的Java接口

代表Web服务数据类型的Java类

代表Web服务方法的Java方法

如图:

在这里插入图片描述

这些类和方法是根据wsdl文件中定义的服务、端点、操作和消息结构生成的,生成的Java代码中包含了与SOAP协议相关的类和方法,可以帮助构建符合SOAP协议要求的消息,并将这些消息发送到远程服务端点。因此可以直接与远程服务进行交互,调用远程服务提供的操作,并获取相应的响应数据。

3.6)生成的Java类集成到项目中并访问Web服务

①将生成的Java类文件复制到项目的源代码目录中,通常是src/main/java/xxx/xx,如果生成的Java类使用了其他依赖项。需要添加依赖。

③编写代码来调用这些类:包括创建客户端实例、调用Web服务的方法等。

<code>import com.baeldung.soap.ws.client.generated.Country;

import com.baeldung.soap.ws.client.generated.CountryService;

import com.baeldung.soap.ws.client.generated.CountryServiceImplService;

public class WsdlClient {

public static void main(String[] args) {

//创建CountryServiceImplService实例

CountryServiceImplService service = new CountryServiceImplService();

//通过CountryServiceImplService实例获取CountryService实例

CountryService countryService = service.getCountryServiceImplPort();

//调用CountryService实例的findByName方法来获取国家信息

Country country = countryService.findByName("USA");

}

}

第四章、soapUI测试工具学习

4.1)SOAP协议介绍

即简单对象访问协议(Simple Object Access Protocol),使用http发送XML格式的数据。如果把 Web service 比喻成 Internet ,SOAP 就可以比喻成 TCP/IP 。 SOAP 是一种协议而非具体产品,SOAP的实现产品有AXIS 。

协议格式:

<soap:Envelope>:SOAP消息的根元素,用于包裹整个SOAP消息。它定义了消息的命名空间,并可以包含soap:Header和soap:Body元素。

<soap:Header>:SOAP消息的头部元素,可包含一些附加的信息,如身份验证凭据、消息的上下文信息等。

<soap:Body>:SOAP消息的主体元素,包含了实际的调用或响应信息。在这里定义了要发送的请求或接收到的响应的具体内容。

<soap:Envelope

xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"code>

soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">code>

<soap:Header>

<!-- 头部信息 -->

</soap:Header>

<soap:Body>

<!-- 主体信息 -->

</soap:Body>

</soap:Envelope>

4.2)soapUI下载安装

官网下载:https://www.soapui.org/downloads/soapui/

或者直接百度网盘链接下载:https://pan.baidu.com/s/13RK6Q4sW443K_SWQFe9TVw?pwd=bybp

下载后双击exe文件安装

在这里插入图片描述

next

在这里插入图片描述

I accept 然后next

在这里插入图片描述

选择安装位置后,这里选择默认选项,直接下一步next就好

在这里插入图片描述

4.3)soapUI用wsdl链接调用soap接口

①File—》New SOAP Project

在这里插入图片描述

②Project Name随意自己取个名字就好,在Initial WSDL/WADL中输入wsdl的地址链接

在这里插入图片描述

③找到需要测试的接口,准备发送请求

在这里插入图片描述

④在请求报文中传入参数,参数如果是xml格式,通过<![CDATA[]]>把参数包裹住

例如:

<code><![CDATA[<?xml version="1.0" encoding="UTF-8"?>code>

<dataset><head>

<id>PalletInfo</id>

<code>000</code>

<name>01</name>

</dataset>

]]>

⑤点击绿色三角按钮发送请求,在响应体那里点击XML选项,格式化显示报文同时可以解决中文乱码

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。