HTTP协议
? ? ? ? ?HTTP是 hypertext transfer protocol(超文本传输协议)的简写,它是 TCP/IP 协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。
?
HTTP服务器遵循一种请求-相应模式,每个HTTP请求包括两个或三个部分:
- 起始行,包含HTTP方法和要执行这个方法的资源路径、HTTP协议版本
- 一个包含名-值字段的首部,可以提供元信息,如认证凭据、请求首选格式、客户端请求哪台主机、客户端一些环境信息
? ? ? ? ? ? ? 常用请求头(浏览器发送给服务器的数据,为了告诉服务器一些情况)
Accept: text/html,image/* ? ?我支持的数据类型
Accept-Charset: utf-8 支持的数据的编码字符集
Accept-Encoding: gzip 支持的压缩方式
Accept-Language: en-us,zh-cn 支持的语言
Host: localhost:8888 请求的主机名
Referer: http://www.atguigu.com/index.jsp 发送请求的界面对应的url 防盗链
User-Agent: Mozilla/4.0 浏览器的相关信息
Connection: keep-Alive ? 请求完成后,到是断开呢还是连接着
Date: Tue,11 Jul 2000 18:23:51 GMT 发送请求的时间
?
Cookie: tt=123 ? ? //后面专门讲
?
- 一个请求主体,包含资源的一个表示(只针对POST和PUT)
POST /books/java.html HTTP/1.1 Accept: */* Accept-Language: en-us Connection: Keep-Alive Host: localhost Referer: http://localhost/links.jsp User-Agent: Mozilla/4.0 Accept-Encoding: gzip,deflate name=tom&password=123?
? ? ? ?
?主要有4个HTTP方法
- GET
- POST
- PUT
- DELETE
在实际中,如今POST在web上被大量滥用。不完成提交的所有安全操作应当使用GET而不是POST。只有真正提交的操作才应当使用POST。
?
?
?
一个HTTP响应代表服务器向客户端回送的数据,它包括:
- 一个状态行
- 若干消息头(响应头)
- 实体内容 (响应体)
HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Thu,13 Jul 2000 05:46:53 GMT Content-Length: 2291 Content-Type: text/html Cache-control: private <HTML> <BODY> ……
?
状态行
格式: HTTP版本号 状态码 原因叙述
举例:HTTP/1.1 200 OK
?
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:
状态码 |
含义 |
100~199 |
表示成功接收请求,但要求客户端继续提交下一次请求才能完成整个处理过程 |
200~299 |
表示成功接收请求并已完成整个处理过程,常用200 |
300~399 |
为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址,常用302 |
400~499 |
客户端的请求有错误,常用404 |
500~599 |
服务器端出现错误,常用 500 |
?
200 代表成功? ? ? ? ? ? ? ? ? ? ? ? ? ?302 代表让浏览器重新请求另一个资源
?
404 找不到请求的资源? ? ? ? ? ?500 服务器出问题
?
?
?
Webservice:HTTP+XML=SOAP协议
WSDL:web service definition language
直译 : WebService定义语言
?
- 对应一种类型的文件.wsdl
- 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式(schema约束)
- 一个web service对应一个唯一的wsdl文档,通过一个暴露出来的接口URL+?wsdl 来获得文档
?
SOAP:simple object ?access protocal
直译: 简单对象访问协议
?
- 是一种简单的、基于HTTP和XML的协议,用于在WEB上交换结构化的数据(符合wsdl规范的xml)
- soap消息:请求消息和响应消息
- http+xml(响应体、请求体)片断
?
?
SEI:WebService EndPoint Interface(终端)
直译: web service的终端接口,
?
- 就是WebService服务器端用来处理请求的接口
CXF:Celtix + XFire
一个apache的用于开发webservice服务器端和客户端的框架
?
一次web service请求的本质:?
?
- 客户端向服务器端发送了一个soap消息(http请求+xml片断)
- 服务器端处理完请求后,向客户端返回一个soap消息
?
?
使用JDK开发WebService
?
开发服务器端
Web Service编码
? @WebService( SEI和SEI的实现类)
? @WebMethod(SEI中的所有方法)
发布Web Service
? ?Endpoint.publish((URL,实现类);
?
开发客户端
使用eclipse提供的web service浏览器访问
查看对应的wsdl文档:…..?wsdl (一般浏览器)
请求webService并查看请求和响应消息(webservice浏览器)
创建客户端应用编码方式访问
借助jdk的wsimport.exe工具生成客户端代码:
? ? ? ?命令行进入生成客户端代码所在路径执行下面命令:
?wsimport-keep url?wsdl ??