Java网络编程——第六章 Http协议
来源:互联网 发布:mac如何删除系统软件 编辑:程序博客网 时间:2024/05/18 02:24
Http请求基本形式:
1、请求头部:方法 资源路径 协议与版本
2、请求首部:Http元数据,键值对结构,必须是ASCII字符,关键字不区分大小,值可以区分大小,也可以不区分,
3、空行 /r/n/r/n
4、消息体
Http响应基本形式:
1、状态行:协议/版本、状态码、状态信息,1xx,提供信息;2、2xx,成功;3、3xx重定向;4xx,刻画端错误;5xx,服务端错误
2、首部
3、空行
4 、消息体
Keep-Alive:http1.1版本提供,服务端响应后保持socket打开,在同一个sockst上等待新的请求
Connection: Keep-Alive,默认打开长连接
Java对Keep-Alive的控制:
1、启用/禁用:设置http.keepAlive为true或false,默认true
2、http.maxConnections设置最大socket连接数,默认5
3、设置http.keepAlive.remainingData为true,使Java在放弃连接后完成数据清理工作,默认false
4、设置sun.net.http.errorStram.enableBuffering为true,尝试缓冲4xx、5xx响应的相对小的错误流,从而释放连接,以备重用,默认false
5、设置sun.net.http.errorStram.enableBufferSize为缓冲错误流使用的字节数,默认4096
6、设置sun.net.http.errorStram.enableBufferTimeout为错误流超时前的毫秒数,默认300ms
Http方法
get:获取一个资源的表示,没有副作用
put:将资源的一个表示上传到一致URL的服务器,具有幂等性,即可以重复操作
delete:从指定URL删除一个资源,具有幂等性
post:和put类似,但是没有指定服务器如何处理新提交的数据,post需要用于不能重复的不安全的操作
head:和get类似,但只获取头部信息,多用于调试
options:允许客户端询问服务器如何处理指定资源
trace:回显客户端的请求,多用于调试
Note:不完成提交的所有安全操作应该使用get,需要提交的使用post
Cookie:存储持久的库客户端状态,cookie存在于请求和响应的首部,由服务器发给客户端再有客户端发给服务端,cookie'一般不包含具体数据,只是指示服务器上的数据;cookie只能是非空白ASCII字符,且不也能包含逗号和分号
cookie特点
1、 服务器只能为他直接所属的域设置cookie
2、cookie的默认作用域为原始URL和所有子目录,但是可以使用Path属性给编作用域,但也只能指定作用与某个子树
3、cookie属性的顺序无关紧要,属性之间使用分号隔开,名-值对放在最前面;
4、可以使用Max-Age属性设置最长保留时间(单位 s),使用expires属性设置过期时间
5、可以使用没有值的secure属性知识安全的cookie事务,通过使用没有值的httponly指示浏览器只通过http和https返回cookie,尤其不能使用JavaScript
CookieManager:抽象类java.net.CookieHandler的一个具体子类,默认不打开cookie
启用cookie
CookieManager manager = new CookieManager();
CookieHandler.setDefault(manager);
cookie 接收策略
CookiePolicy.ACCEPT_ALL 接受所有cookie
CookiePolicy.ACCEPT_NONE 不接受cookie
CookiePolicy.Accept_ORIGINAL_SERVER 只接受与之对话的服务器的cookie,不接受第三方cookie
自定义cookie接受策略——实现CookiePolicy接口,然后覆盖public boolean shouleAccept(URI uri, HttpCookie cookie);
例如:不接受来自 .gov的cookie
public class NoGovermentCookie implements CookiePolicy {
public boolean shouldAccept(URI uri, HttpCookie cookie) {
if(uri.getAuthority().toLowerCase().endWith("gov") || cookie.getDomain().toLowerCase().endWidth("gov")) {
retuern fasle;
}
return true;
}
}
存储cookie 使用CookieManager对象的的getCookieStore对象,进而使用CookieStore的add、remove、get等方法
CookieStroe store = manager.getCookieStore();
0 0
- Java网络编程——第六章 Http协议
- java 网络编程【10】 HTTP协议详解
- Java中基于HTTP协议网络编程
- Java中基于HTTP协议网络编程
- Java中基于HTTP协议网络编程
- HTTP 协议网络编程
- 网络编程(3)——初探HTTP协议
- 网络编程基础-http协议
- ios网络编程协议---http
- 网络编程02---HTTP协议
- 网络编程---http协议 ---- 陈洪鑫
- 网络编程---HTTP协议加强
- Java网络编程(20):HTTP协议简介
- java网络编程(3):HTTP协议调用SOAP
- JAVA 网络编程(7) Netty 处理Http协议 示例
- Java编程思想——第六章
- 网络编程--HTTP协议访问网络
- Java网络编程(二)-基于http协议的网络编程
- Github最火开源项目-ormlite数据库使用
- linux上安装分布式文件系统FastDFS(单节点)
- C#调用openCV函数及其移植
- CF
- java封装
- Java网络编程——第六章 Http协议
- Ogre2.1 分析笔记(七) 材质脚本分析
- 5.8_总结
- mySql的事务隔离级别
- 项目整体管理脉络
- [UE4]用Slate框架写UE4插件
- thinkphp分页代码
- 【数据结构基础】哈夫曼编码
- Uncaught TypeError: Cannot read property 'querySelector' of null