一、什么是WebService
WebService也叫XML Web Service WebService,它是基于Web的服务,也就是说让服务器端整出一些资源,暴露接口让客户端应用访问,抽象上来说是一个跨语言、跨平台的规范,实际应用上是多个跨平台、跨语言的应用间通信整合的方案。
比如hao123,123456等门户网站提供的天气预报查看功能,hao123不可能自己做一个天气预报的系统,肯定是由气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server),而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client)。网站提供了天气预报的服务,但其实这些门户网站什么也没有做,只是简单了调用了一下气象中心服务器上的一段代码而已。
所谓跨语言:不同的系统可能使用不同开发语言,像天气预报的系统,你不知道开发这个系统使用的哪种技术,有可能是Java,有可能是php,也有可能是PHP,假如天气预报的系统使用PHP开发,您的应用程序使用的是Java语言,那你要怎么去掉用使用PHP开发的天气预报的系统呢?难道直接去访问天气预报页面吗?那肯定不行,这时候就要使用WebService技术,调用天气预报系统服务端用来展示天气信息的代码,取回来之后在门户网显示。
二、为什么要使用WebService
WebService能解决跨平台调用,跨语言调用,远程调用。如上图。
三、什么时候使用WebService
♦同一家公司的新旧应用之间
♦不同公司的应用之间
♦一些提供数据的内容聚合应用:天气预报、股票行情,今日财经等等
四、WebService的几个重要术语
♦WSDL(Web Service Definition Language):WebService定义语言
对应一种类型.wsdl的文件,定义了WebService的服务器端与客户端应用交互传递请求和响应数据的格式和方式,一个WebService对应一个唯一的wsdl文档。
♦SOAP(Simple Object Access Protocal):简单对象传输协议
是一种简单的、基于HTTP和XML的协议,,用于在WEB上交换结构化的数据。
♦SEI(WebService EndPoint Interface):WebService 终端接口
是WebService服务器端用来处理请求的接口。
♦CXF(Celtix + XFire)
一个Apache的用于开发WebService 服务器端和客户端的框架
♦UDDI (Universal Description Discovery and Integration)
是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
五、WebService简单调用
找到提供电子邮件地址验证的WebService网络地址
地址:http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx
♦使用Eclipse提供的WebService浏览器访问一下,测试是否可用
ValidateEmailAddress:验证 Email 地址是否正确,输入参数:EmailAddress = Email 地址(默认SMTP端口25),返回数据: Byte 字节。返回值: 0 = 请重新验证;1 = 邮件地址合法;2 = 只是域名正确;3 = 一个未知错误;4 = 邮件服务器没有找到;5 = 电子邮件地址错误;6 = 免费用户验证超过数量(50次/24小时);7 = 商业用户不能通过验证。
♦客户端编码方式访问
借助命令工具自动生成客户端代码;借助生成的代码编写请求代码
浏览器访问地址:http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?WSDL
查看源文件,将源码保存到本地生成一个.wsdl结尾的文件。
将生成的文件,放到新建的Java工程目录下面,如图:
进入cmd窗口,使用命令生成客户端代码:
wsimport -keep E:\NewWork\ValidateEmailClient\src\ValidateEmailWebService.wsdl
然后刷新工程,生成了客户端代码
接下来,我们来写一段调用的类
package cn.com.client;
import cn.com.webxml.ValidateEmailWebService;
import cn.com.webxml.ValidateEmailWebServiceSoap;
/**
*
* @author queen
* @since 2017-06-25
*/
public class ValidateEmailClient {
public static void main(String[] args) {
ValidateEmailWebService validateEmailWebService = new ValidateEmailWebService();
ValidateEmailWebServiceSoap validateEmailWebServiceSoap = validateEmailWebService
.getValidateEmailWebServiceSoap();
//1:邮件地址合法 2:只是域名正确,返回值判断
short validateFlag0 = validateEmailWebServiceSoap
.validateEmailAddress("153368376@qq.com");
System.out.println(validateFlag0);
short validateFlag1 = validateEmailWebServiceSoap
.validateEmailAddress("1533683767r77@qq.com");
System.out.println(validateFlag1);
}
}
输入您想要验证的邮箱,就可以测试接口啦。
注意:博主在实践的过程中出现了“wsimport不是内部或外部命令”报错,如果您也出现了,请你可以参照这篇文章《wsimport不是内部或外部命令》解决您的问题。
博文地址:http://www.marsitman.com/webservice/what_is_webservice.html
版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。