URLConnection(三)
文章目录
- 1. 配置连接
- 2. protected URL url
- 3. protected boolean connected
- 4. protected boolean allowUserInteraction
- 5. protected boolean doInput
- 5. protected boolean doOutput
- 6. protected boolean isModifiedSince
- 7. protected boolean useCaches
- 8. 超时
1. 配置连接
URLConnection类有7个保护的实例字段,定义了客户端如何向服务器做出请求。这些字段包括:
protected URL url;
protected boolean doInput= true;
protected boolean doOutput= true;
protected boolean allowUserInteraction=defaultAllowUserInteraction;
protected long ifModifiedSince=0;
protected boolean connected=false;
如果doOutput为true,那么除了通过这个URLConnection读取数据外,还可以将数据写入到服务器,如果useCaches为false,连接会绕过所有本地缓存,重新从服务器下载文件,由于这些字段都是保护字段,所以他们的值都需要通过相应的设置方法和获取方法来访问和修改(Get和set方法)。注意只能在URLConnection连接之前修改这些字段,如果连接方法已经打开再去设置这些属性会抛出IllegalStateException
异常。还有一些方法和设置方法定义了所有URLConnetion实例的默认行为:
public boolean getDefaultUseCaches()
public void setDefaultUseCaches()
public static void setDefaultAllowUserInteraction(boolean defaultAllowUserInteraction)
public static boolean getDefaultAllowUserInteration()
public static FileNameMap getFileNameMap()
public static void setFileNameMap(FileNameMap map)
这些方法可以在任何时候调用,新的默认值只应用于设置这些新默认值之后构造的URLConnection
2. protected URL url
url字段指定了这个URLConnection连接的URL,构造函数会在创建URLConnection时设置这个字段,此后不再改变,可以通过调用getURL方法获取这个字段的值。
public class Main{public static void main(String[] args) {try{URL u=new URL("http://www.baidu.com");URLConnection uc=u.openConnection();System.out.println(uc.getURL());}catch(IOException e){System.err.print(e);}}
}
3. protected boolean connected
如果连接已经打开,boolean字段connected为true,如果连接关闭,这个字段则为false,由于在创建一个新的URLConnection对象时连接尚未打开,所以其初始值为false。这个变量只能由URLConnection和其子类访问。当我们实现自己的URLConnection,定义自己的协议处理器时,一定要将connected变量在打开连接时设置为true,断开时设置为false
4. protected boolean allowUserInteraction
有些URLConnection需要与用户交互,例如,Web浏览器可能需要访问用户名和口令。这个字段的作用就是指明是否运行与用户交互。这个变量时保护类型,不过公共方法getAllowUserInteraction()可以读取它的值,公共方法setAllowUserInteraction可以修改它的值。
public class Main{public static void main(String[] args) {try{URL u=new URL("http://www.baidu.com");URLConnection uc=u.openConnection();System.out.println(true);uc.setAllowUserInteraction(false);System.out.println(uc.getAllowUserInteraction());}catch(IOException e){System.err.print(e);}}
}
静态方法getDefaultAllowUserInteraction()和setDefaultAllowUserInteraction()确定了URLConnection对象在没有显示设置allowUserInteraction时的默认行为。由于是静态变量,所以它归类所有,所以一旦设置了这个值,那么以后该类创建的所有实例都会是我们设置的值。
5. protected boolean doInput
URLConnection可以用于读取服务器,写入服务器,或者同时读/写服务器。如果URLConnection可以用来读取,保护字段boolean字段doInput就为true,否则为false。默认值为true,要访问这个保护类型的字段,可以使用getDoInput和setDoInput公共方法:
public class Main{public static void main(String[] args) {try{URL u=new URL("http://www.baidu.com");URLConnection uc=u.openConnection();System.out.println(uc.getDoInput());uc.setDoInput(false);System.out.println(uc.getDoInput());}catch(IOException e){System.err.print(e);}}
}
5. protected boolean doOutput
程序可以使用URLConnection将输出发回服务器。例如,如果程序需要使用POST方法向服务器发送数据,可以通过URLConnection获取输入流来完成。如果URLConnection可以用于写入,保护字段diOutput为true,否则为false,默认值为false。
public class Main{public static void main(String[] args) {try{URL u=new URL("http://www.baidu.com");URLConnection uc=u.openConnection();System.out.println(uc.getDoOutput());uc.setDoOutput(true);System.out.println(uc.getDoOutput());}catch(IOException e){System.err.print(e);}}
}
6. protected boolean isModifiedSince
许多客户端会保留以前获取的文档的缓存,如果用户再次要求相同的文档,可以从缓存中获取。不过在最后一次获取这个文档之后,服务器上的文档可能会改变。要判断是否变化,唯一的办法就是询问服务器,客户端可以在请求的HTTP首部中包括一个If-Modified-since字段。如果文档在这个时期之后有所修改,服务器就会重新发送文档。
public class Main{public static void main(String[] args) {try{URL u=new URL("https://cn.bing.com/images/search?view=detailV2&ccid=NbNA%2b6Dd&id=A8B2DC84897469538E9EA1DD121D729451F327D6&thid=OIP.NbNA-6DdfGdvGbWOOCnsYwHaC9&mediaurl=https%3a%2f%2fcache.yisu.com%2fupload%2finformation%2f20200318%2f105%2f36606.jpg&exph=320&expw=800&q=java%e4%b8%ad%e4%b8%80%e4%b8%aa%e7%b1%bb%e7%9a%84protected%e6%96%b9%e6%b3%95%e6%80%8e%e4%b9%88%e8%ae%bf%e9%97%ae&simid=608026954256625774&FORM=IRPRST&ck=B0545A260FD37C81DCCC61BBEF40FD32&selectedIndex=6&ajaxhist=0&ajaxserp=0");URLConnection uc=u.openConnection();System.out.println("Original if modified since:"+new Date(uc.getIfModifiedSince()));}catch(IOException e){System.err.print(e);}}
}
7. protected boolean useCaches
有些客户端可以从本地缓存中获取文档,而不是从服务器中获取。applet可以访问浏览器缓存。如果有缓存,useCaches变量确定了是否可以使用缓存,默认值为true,表示将使用缓存,否则为false。
public class Main{public static void main(String[] args) {try{URL u=new URL("https://cn.bing.com/images/search?view=detailV2&ccid=NbNA%2b6Dd&id=A8B2DC84897469538E9EA1DD121D729451F327D6&thid=OIP.NbNA-6DdfGdvGbWOOCnsYwHaC9&mediaurl=https%3a%2f%2fcache.yisu.com%2fupload%2finformation%2f20200318%2f105%2f36606.jpg&exph=320&expw=800&q=java%e4%b8%ad%e4%b8%80%e4%b8%aa%e7%b1%bb%e7%9a%84protected%e6%96%b9%e6%b3%95%e6%80%8e%e4%b9%88%e8%ae%bf%e9%97%ae&simid=608026954256625774&FORM=IRPRST&ck=B0545A260FD37C81DCCC61BBEF40FD32&selectedIndex=6&ajaxhist=0&ajaxserp=0");URLConnection uc=u.openConnection();System.out.println(uc.getUseCaches());uc.setUseCaches(false);System.out.println(uc.getUseCaches());}catch(IOException e){System.err.print(e);}}
}
getDefaultUseCaches()和setDefaultUseCaches()这两个方法定义了useCached字段的初始值。虽然不是静态方法,但这些方法确实能设置和获得一个静态字段,以后该类的所有URLConnection实例都会设置为我们设置的默认行为。
8. 超时
有四个方法可以查询和修改连接的超时值,也就是说,底层Socket等待远程服务器的响应时间,等待时间超过我们设置的时间就会抛出SocketTimeoutException异常
public void setConnectTimeout(int timeout)
public int getConnectTimeout()
public void setReadTimeout(int timeout)
public int getReadTimeout()
setConnectTimeout(int timeout)和getConnectTimeout()控制socket等待建立连接的时间。setReadTimeout(int timeout)和getReadTimeout()控制输入流等待数据到达的时间,所有的这四个方法都以毫秒为单位,这四个方法都将0解释为用不超时。如果超时值为负数,两个设置方法会抛出IllegalArgumentException
异常。
public class Main{public static void main(String[] args) {try{URL u=new URL("https://cn.bing.com/images/search?view=detailV2&ccid=NbNA%2b6Dd&id=A8B2DC84897469538E9EA1DD121D729451F327D6&thid=OIP.NbNA-6DdfGdvGbWOOCnsYwHaC9&mediaurl=https%3a%2f%2fcache.yisu.com%2fupload%2finformation%2f20200318%2f105%2f36606.jpg&exph=320&expw=800&q=java%e4%b8%ad%e4%b8%80%e4%b8%aa%e7%b1%bb%e7%9a%84protected%e6%96%b9%e6%b3%95%e6%80%8e%e4%b9%88%e8%ae%bf%e9%97%ae&simid=608026954256625774&FORM=IRPRST&ck=B0545A260FD37C81DCCC61BBEF40FD32&selectedIndex=6&ajaxhist=0&ajaxserp=0");URLConnection uc=u.openConnection();uc.setConnectTimeout(30000);uc.setReadTimeout(5000);}catch(IOException e){System.err.print(e);}}
}
相关文章:

URLConnection(三)
文章目录 1. 配置连接2. protected URL url3. protected boolean connected4. protected boolean allowUserInteraction5. protected boolean doInput5. protected boolean doOutput6. protected boolean isModifiedSince7. protected boolean useCaches8. 超时 1. 配置连接 U…...

针对KF状态估计的电力系统虚假数据注入攻击研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
2023-05-25 LeetCode每日一题(差值数组不同的字符串)
2023-05-25每日一题 一、题目编号 差值数组不同的字符串 二、题目链接 点击跳转到题目位置 三、题目描述 给你一个字符串数组 words ,每一个字符串长度都相同,令所有字符串的长度都为 n 。 每个字符串 words[i] 可以被转化为一个长度为 n - 1 的 …...
MI小米验厂知识点
【MI小米验厂知识点】 小米科技有限责任公司成立于2010年3月3日,是专注于智能硬件和电子产品研发、智能手机、智能电动汽车、互联网电视及智能家居生态链建设的全球化移动互联网企业、创新型科技企业。小米公司创造了用互联网模式开发手机操作系统、发烧友参与开发改…...
损失函数——交叉熵损失(Cross-entropy loss)
交叉熵损失(Cross-entropy loss)是深度学习中常用的一种损失函数,通常用于分类问题。它衡量了模型预测结果与实际结果之间的差距,是优化模型参数的关键指标之一。以下是交叉熵损失的详细介绍。 假设我们有一个分类问题࿰…...
电商ERP接口erp进销存接口
电商API详情接口在ERP中的重要性 电商行业的发展已经改变了人们的消费方式。作为一种连续不断涌现并不断发展的新型销售方式,电商具有开创新市场、大众化消费、商业模式的多样化、效率的提高等优势,对传统零售业产生了极大的冲击。而ERP作为企业资源规划…...
leetcode 922. 按奇偶排序数组 II
题目描述解题思路执行结果 leetcode 922. 按奇偶排序数组 II. 题目描述 按奇偶排序数组 II 给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 &#…...

Unity四叉树地图
当使用Unity构建大规模的游戏地图或场景时,使用四叉树数据结构可以提高性能和效率。四叉树是一种基于分割的数据结构,将空间划分为四个相等的子区域,并以递归方式构建树结构。在游戏开发中,四叉树常用于空间分区、碰撞检测和可视化…...

【unity插件】OpenFracture插件实现物体破裂和切割
插件地址 https://github.com/Mustenaka/OpenFracture 使用注意事项 1.如果要导入自定义网格,则必须在导入设置中将“启用读/写”设置为 true。否则,您将收到错误。 2.网格必须是非相交和封闭的。否则,重新三角测量将失败。 上面描绘的是凳子的线框模型。注意横杆如何与…...
Spring Security实现登录
前言 Spring Security是Spring框架下的一个用于身份验证和授权的框架,它可以帮忙管理web应用中的用户认证、授权以及安全性问题。本文将介绍如何使用Spring Security实现用户登录功能,本文主要包括以下内容: 环境准备Spring Security核心概…...

小狐狸ChatGPT付费创作系统1.9.7独立版 + H5端 + 小程序前端增加AI绘画+GPT4接口
小狐狸ChatGPT 1.9.7独立版经播播资源测试了版本比较,本版核心增加了GPT4.0接口功能,小程序端内置了AI绘画功能。体验下来问答速度感觉体验更好。小程序端有更新请对应开发工具更新上传,本版无开源端。播播资源提供的安装教程详见下方&#x…...

双目测距联合YOLOv8 项目总结
代码贴:双目测距--5 双目相机 联合 YOLOv8_爱钓鱼的歪猴的博客-CSDN博客 0、图片筛选 可以用matlab,对双目图像做个一个筛选,也就是做双目标定。 熟悉matlab的小伙伴完全可以用matlab做双目标定,我是没咋接触过不知道怎么导出标定结果&#…...

Windows提权:利用MSSQL数据库,Oracle数据库
目录 MSSQL提权:使用xp_cmdshell进行提权 MSSQL:使用sp_OACreate进行提权 MSSQL:使用沙盒提权 Oracle提权:工具一把梭哈 总结 MSSQL在Windows server类的操作系统上,默认具有system权限。 MSSQL提权:使…...

linux常见的二十多个指令
目录 一、指令的概念 二、28个常见的指令 ⭐2.1 ls指令 ⭐2.2 pwd指令 ⭐2.3 cd指令 ⭐2.4tree指令 ⭐2.5 mkdir指令 ⭐2.6 touch指令 ⭐2.7 rmdir指令 ⭐2.8 rm指令 ⭐2.9 clear指令 ⭐2.10 man指令 ⭐2.11 cp指令 ⭐2.12 mv指令 ⭐2.13 cat指令(适…...

内蒙古自治区住房和城乡建设分析及解决方案
安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘 要:为深入贯彻落实《国务院办公厅关于印发新能源汽车产业发展规划(2021—2035年)的通知》(国办发 ﹝2020﹞39号)、《国家发展改革委等部门关于进一步提升…...

JavaEE进阶5/25(属性注入)
目录 1.更简单的存取Spring对象 2.获取Bean对象(对象装配)DI 3. Resource注入 4.Resource注入和Autowired注入的区别 1.更简单的存取Spring对象 2.获取Bean对象(对象装配)DI 对象装配(对象注入)有三种方…...
【Java学习记录-4】相关名词和概念记录(持续更新)
目录 1 注解2 包3 权限修饰符4 状态修饰符1. final2. static 5. 多态6.抽象类7.接口 1 注解 Override是一个注解,可以帮助我们检查重写方法的方法声明的正确性 注意: 私有方法不能被重写(父类私有成员子类是不能继承的)子类方法…...

《程序员面试金典(第6版)》面试题 16.25. LRU 缓存(自定义双向链表,list库函数,哈希映射)
题目描述 设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值),并在初始化时指定最大容量。当缓存被填满时,它应该删除最近最少使用的项目。 题目传送门:…...

kong网关启用jwt认证插件
认证流程: 1、创建一个用户 2、生成jwt的所需要的key和密钥 3、在https://jwt.io/的生成jwt token 4、启用jwt插件 5、发送请求的时候携带jwt的token信息 官方指导:https://docs.konghq.com/hub/kong-inc/jwt/configuration/examples/ 一、创建一个新的…...

day12 - 图像修复
在图像处理的过程中,经常会遇到图像存在多余的线条或者噪声的情况,对于这种情况我们会先对图像进行预处理,去除掉对图形内容有影响的噪声,在进行后续的处理。 本节实验我们介绍使用图像膨胀来处理图形的多余线条,进行…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...