两天入门WebService

WebService总结

1、WebService是什么?

1.1 基于Web的服务,服务器端整出一些资源让客户端应用访问

1.2 一个跨语言、跨平台的规范

1.3 多个跨语言、跨平台的应用间通信整合的方案

2、几个重要术语

2.1 WSDL: WebService definition language

直译:WebService定义语言

1、对应一种类型的文件:.wsdl

2、定义了WebService的服务器端与客户端应用交互传递请求和相应数据的格式和方式

3、一个WebService对应一个唯一的wsdl文档

2.2 SOAP: simple object access protocal

直译:简单对象访问协议

1、是一种简单的、基于HTTP和XML的协议,用于在WEB上交换结构化的数据。

2、SOAP信息:请求消息和响应消息

3、HTTP和XML

2.3 SEI:WebService EndPoint Interface

直译:WebService的终端接口

就是WebService服务器端用来处理请求的接口

2.4 CXF:Celt+XFire

一个apache的用于开发服务器端和客户端的框架

3、HTTP协议

3.1 HttpRequest

请求的格式分成三个部分:请求行、消息头、消息正文

CR:回车(\r)

LF:换行(\n)

1、请求行:  method    url             protocal
例如:      Get       /index.html     HTTP/1.1CRLF

2、消息头
name1:value1CRLF
name2:value2CRLF
...
CRLF     单独放送一个CRLF表示消息头全部发送完毕

3、消息正文(略)

3.2 HttpResponse

请求的格式分成三个部分:状态行、响应头、响应正文

1、状态行:    协议版本        状态代码        状态描述
例如:        HTTP/1.1       200            OKCRLF

2、响应头(与消息头格式相同)

3、响应正文(字节数据,是实际数据)

4、用Eclipse演示WebService

1、javaEE模式下,点击WebService浏览器(小地球右边的那个按钮)

2、点击右边的wsdl Page (五角星左边的那个按钮)

3、点击WSDL Main

4、把复制好的wsdl url地址粘贴过来例如:
http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

5、go

6、add

7、source

5、开发WebService

5.1 使用jdk开发

1)开发服务器端

webservice编码:

-- @WebService(SEI和SEI的实现类)

-- @WebMethod(SEI中的所有方法)

发布WebService

-- EndPoint终端  发布WebService

request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://day01_webservice_ws.atguigu.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soapenv:Body>
- <q0:introduce>
<arg0>Jack</arg0> 
<arg1>18</arg1> 
</q0:introduce>
</soapenv:Body>
</soapenv:Envelope>

response:
- <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
- <S:Body>
- <ns2:introduceResponse xmlns:ns2="http://day01_webservice_ws.atguigu.cn/">
<return>I'm Jack,and I'm 18years old.</return> 
</ns2:introduceResponse>
</S:Body>
</S:Envelope>


2)开发客户端
在客户端项目的src目录下cmd 执行 
wsimport -keep url
例如:wsimport -keep http://localhost:8989/AAAA-day01-WebService/hellows?wsdl

这样会自动生成代码

编写测试代码

5、2 使用Eclipse的Tcp_IP工具(端口转发)监听WebService请求


启动起来 这里配置了8088会转发到8089

本地wsdl文件自动生成代码


5.3 编写天气预报查询WebService

如果是.net写的WebService会出现问题

解决方案:
1、将对应的wsdl文件保存到本地
2、修改wsdl文档的部分内容
  将<s:element ref="s:schema" /><s:any />替换成<s:any minOccurs="2" maxOccurs="2"/>

5.4 编写手机号码归属地查询WebService


5.5 编写中英双向翻译WebService


6、wsdl文档深入分析

6、1 文档结构

6.2文档结构图

6.3 重要标签的说明

6.4演示cxf框架

E:\JSD1708HY\APP\tts9\apache-cxf-2.5.9\bin   有一个wsdl12java



7、CXF支持的数据类型

--基本类型
--引用类型
	--String
	--集合:List、Set、Map
	--自定义类型:Student

8、一次 Web service 请求的流程

9、WebService面试题

1、webservice相当于 HTTP+XML   +schema(?)

2、wsdl是什么
直译:WebService定义语言,对应一种类型的文件:.wsdl,定义了WebService的服务器端与客户端应用交互传递请求和相应数据的格式和方式,一个WebService对应一个唯一的wsdl文档

3、如何发布一个WebService
		定义SEI  @WebService @WebMethod
		定义SEI的实现    @WebService
		EndPoint.publish(url,SEI实现类)

4、如何请求一个WebService
	1)根据wsdl文档生成客户端代码  
		jdk  ------wsport 
		cxf   ------- E:\JSD1708HY\APP\tts9\apache-cxf-2.5.9\bin\wsdl12java

	2)根据生成的代码调用WebService

10、cxf的拦截器

10.1 拦截器 API

Interceptor(拦截器接口)
	AbstractPhaseInterceptor(自定义拦截器从此继承)
	LoggingInInterceptor(系统日志入拦截器类)
	LoggingOutInterceptor(系统日志出拦截器类)

演示CXF的拦截器-----服务器端

演示CXF的拦截器-----客户端

11、用 CXF 编写基于 spring 的 web service

服务端




客户端

结合Spring的情况下,如何自定义拦截器

1. Server 端

– 在 beans.xml 中,在 endpoint 中配置上入拦截器

2. Client 端

– 通过 Client 对象设置出拦截器

12、其他调用WebService的方式

12.1 Ajax调用WebService

获取Ajax对象,因为历史原因需要区分浏览器


12.2 Jquery请求webservice

12.3 HttpURLConnection 调用 WebService


13、通过注解修改 wsdl 文档










猜你喜欢

转载自blog.csdn.net/qq_41606459/article/details/86490062