5、URLConnection(2)
缓存
Web浏览器多年来已知在缓存页面和图片
如果对于与网站的图片每一个页面上重复出现
浏览器一般只会加载一次,将其保存在缓冲中,每次加载的时候会从缓存中重新加载
一些HTTP首部可以控制缓存
一般情况下:
一般认为使用GET通过HTTP访问的页面可以缓存,也应当缓存
使用HTTPS或者POST访问的页面通常不应缓存
HTTP首部可以对此做出调整:
Java的Web缓存
默认情况下,Java并不完成缓存
要安装URL类使用的系统级缓存
ResponseCache
public abstract CacheResponseget(URI uri, String rqstMethod, Map<String, List<String>> rqstHeaders) throws IOException; public abstract CacheRequest put(URI uri, URLConnection conn) throws IOException;
put()方法返回一个CacheRequest对象,包装一个OutputStream
URL将把读取可缓存数据写入这个输出流
CacheRequest是一个抽象类 :
public abstract OutputStream getBody() throws IOException; public abstract void abort();
子类的getOutputStream()方法应当返回一个OutputStream
指向缓存中的数据库
这个数据库与同时传入put()方法的URI对应
复制出现问题就会调用abort()方法,从缓存中删除这个请求存储的的所有数据
配置连接
URLConnection类有7个保护的实例字段
定义了客户端如何向服务器做出请求
可以通过相关方法进行设置和访问这些数据:
只能在URLConnection连接之前修改这些字段
获取方法和设置昂发定义了所有URLConnection实例的默认行为
1、protected URL url
url指定这个URLConnection连接的URL
构造函数会在创建对象时设置这个字段,此后不能再改变
可以通过getURL()方法获取这个字段的值
2、protected boolean connected
如过连接已经打开值为true
连接关闭则为false
由于创建一个新的URLConnection对象时连接尚未打开,所以初始值为fasle
3、protected boolean allowUserInteraction
是否允许用户交互,默认为false
可以读取和修改该值:
4、protected boolean doInput
URLConnection可以用于读取服务器、写入服务器,同时用于读/写服务器
可以用来读取保护类型booleab字段doInput就为true,否则会false
可以是哟个瓯宁宫方法进行访问和修改这个值
5、protected boolean doOutput
程序可以使用URLConnection将输出发回服务器
可以用于写入、保护类型boolea字段都Output就为true,否则为false
提供了公共的访问和修改方法
6、protected boolean ifModifiedSince
许多客户端会保留以前获取文档的缓存
再次获取可以再缓存中获取
再最后一次获取这个文档之后,服务器上的文档可能改变,需要判断是否有变化,唯一的办法就是询问服务器
提供公共方法进行获取和修改:
7、protected boolean userCaches
禁用缓存,确保每次获取的请求都是最新版本
两个公共方法用于获取和修改这个字段
超时
有4个方法可以查询和修改连接的超时设置
底层的Socket等待远程服务器的响应时间
等待多长时间后会抛出SocketTimeoutException
相关方法:
配置客户端请求HTTP首部
Web服务器可以根据这个信息向不同的客户端提供不同的页面
获取和设置cookie等
每个URLConnection会在首部默认设置一些不同名-值
使用setRequestProperty()方法为HTTP首部增加字段
使用该方法指定的名和值为这个URLConnection的首部增加一个字段
这个放法只能再连接打开之前使用
如果已经打开,会抛异常
getRequestProperty()方法用于返回这个URLConnection所用的HTTP首部中的字段值
HTTP允许一个制定名字的属性有多个值
各个值之间用逗号隔开
addRequestProperty(String key, String value)
用于增加新的属性值
服务器一般会忽略无法识别的首部
HTTP确实对首部字段的名和值的内容进行一些限制
如:名不可包含空白符、值不能包含任何 换行符
转载于:https://www.cnblogs.com/Mrchengs/p/10928327.html
5、URLConnection(2)相关推荐
- 终端(terminal)、tty、shell、控制台(console)、bash之间的区别与联系
1.终端(terminal) 终端(termimal)= tty(Teletypewriter, 电传打印机),作用是提供一个命令的输入输出环境,在linux下使用组合键ctrl+alt+T打开的就是 ...
- 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。...
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- R语言普通最小二乘(OLS)回归说明、以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性)、Independence(独立性)、Linearity(线性度)、方差齐性)
R语言普通最小二乘(OLS)回归说明.以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性).Independence(独立性).Linearity(线性度).方差齐性) ...
- R语言使用lm构建线性回归模型、并将目标变量对数化实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型系数(coefficient)、模型总结信息(summary)、残差总结信息
R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型系数(coefficient).模型总结信息(summary).残差总结信 ...
- R语言应用substr函数和substring函数抽取(extract)、删除(Remove)、替换、匹配(Match)特定的字符串、并对比两个函数的异同、grepl检查子字符串是否存在于字符串中
R语言应用substr函数和substring函数抽取(extract).删除(Remove).替换(Replace).匹配(Match)特定的字符串.并对比substr函数和substring函数在 ...
- R语言plot函数可视化、ggplot2可视化把图像标题(title)的部分内容着色实战:标题的部分内容配置不同的色彩、副标题(subtitle)的内容配置不同的色彩
R语言plot函数可视化.ggplot2可视化把图像标题(title)的部分内容着色实战:标题的部分内容配置不同的色彩.副标题(subtitle)的内容配置不同的色彩 目录
- R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标
R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy.Precision.Recall(sensitivity).F1.Specificity指标 ...
- R语言ggplot2可视化指定图像标题(title)、副标题(subtitle)的内容、字体大小、字体类型、色彩、对齐方式等实战
R语言ggplot2可视化指定图像标题(title).副标题(subtitle)的内容.字体大小.字体类型.色彩.对齐方式等实战 目录
- Python使用SQLAlchemy连接数据库并创建数据表、插入数据、删除数据、更新表、查询表(CRUD)
Python使用SQLAlchemy连接数据库并创建数据表.插入数据.删除数据.更新表.查询表(CRUD) 目录 Python使用SQLAlchemy连接数据库并创建数据表 #SQLAlchemy # ...
最新文章
- IBM发布迄今最强的量子处理器,面向商业和科研用途
- Linux下LAMP环境的安装之编译安装过程(五)
- 一文了解 Apache Flink 核心技术
- pycharm安装pyqt5失败_PyQt5安装与Pycharm集成配置开发环境
- Mingw下g++编译执行顺序错误
- Android Studio之导入安卓项目gradle编译出现问题分析日志思路
- Mybatis源码之与Spring集成包
- linux ps ax tl,Linux常用指令 - osc_wa6fkyf0的个人空间 - OSCHINA - 中文开源技术交流社区...
- 多语言界面 Web 站点的几个 Tip
- centos 利用yum更新git
- Keil 5 解锁被锁定的文件 修改其中的代码 STM32
- Ubuntu(Linux)腾达U12网卡驱动的离线安装
- <笠翁对韵>全文及译文(上卷)
- Excel自动批量发邮件
- python--如何进行去重
- 计算机对教育的重要性 英语作文,关于教育的英语作文 教育重要性英语作文!
- ldconfig是个什么东东
- Java Logging之JUL系列——Logger Hierarchy
- python四级是什么水平_四级能过的水平大概什么水平?
- mysql写周报_mysql 数据分析如何实现日报、周报、月报和年报?