WebService的概念和基本使用

本文详细介绍了WebService的概念,包括其三要素:SOAP、WSDL、UDDI,以及SOAP协议的结构和使用方式。通过一个天气查询接口的例子,展示了WebService的编写、发布、调用全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebService

WebService即Web服务。它采用标准的SOAP协议传输,采用WSDL作为描述语言的跨编程语言和跨操作系统的远程调用技术,主要可以进行资源共享。

WebService三要素

WebService三要素为SOAP、WSDL、UDDI。SOAP用来描述传递信息的格式; WSDL用来描述如何访问具体的接口,可以理解为WebService的使用说明书;UDDI目录服务,用来管理,分发,查询WebService 。

SOAP协议

WebService中比较重要的是SOAP协议。SOAP协议即是简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议。它是通过HTTP来交换信息,简单理解为SOAP=HTTP+XML。

SOAP协议消息结构

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" 
 soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>

</soap:Header>
<soap:Body>
<soap:Fault>
</soap:Fault>
</soap:Body>
</soap:Envelope>
复制代码

WebService的基本使用

1、编写天气查询接口
public interface WeatherService {
	public String queryWeather(String cityName);
}
复制代码
2、实现天气查询接口
import javax.jws.WebService;

@WebService
public class WeatherServiceImpl implements WeatherService {
	//天气预报查询
	@Override
	public String queryWeather(String cityName) {
		System.out.println("获取到城市名为:"+cityName);
		String result = "晴";
		return result;
	}
}
复制代码
3、发布服务
import javax.xml.ws.Endpoint;

public class Server {
	public static void main(String[] args) {
		//发布天气查询服务
		Endpoint.publish("http://127.0.0.1:22222/weather",
				new WeatherServiceImpl());
		
		System.out.println("发布WebService服务");
	}
}
复制代码
4、生成客户端调用代码
//可以根据wsdl文档生成客户端调用代码的工具
//在命令行中输入以下命令即可生成
wsimport -s . http://127.0.0.1:22222/weather?wsdl

/*
 * wsimport
 * -d<目录>   将生成.class文件
 * -s<目录>   将生成.java文件
 * -p<生成的新包名> 将生成的类,放于指定的包下。
 */
 
 //生成以下Java文件
 /*
 ObjectFactory.java
 package-info.java
 QueryWeather.java
 QueryWeatherResponse.java
 WeatherServiceImpl.java
 WeatherServiceImplService.java
*/
复制代码
5、编写客户端调用
import com.plf.webservice.WeatherServiceImpl;
import com.plf.webservice.WeatherServiceImplService;

public class Client {

	public static void main(String[] args) {
		//创建服务视图
		WeatherServiceImplService weatherInterfaceImplService =
		    new WeatherServiceImplService();
		//通过服务视图得到服务端点
		WeatherServiceImpl weatherInterfaceImpl = 
		    weatherInterfaceImplService.getWeatherServiceImplPort();
		//调用webservice
		String result = weatherInterfaceImpl.queryWeather("绍兴");
		System.out.println("从服务器获取数据:"+result);
	}
}
复制代码
6、结果
发布WebService服务
获取到城市名为:绍兴


从服务器获取数据:晴
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值