URLConnection和HttpURLConnection类

配置URLConnection

在实际建立连接之前,我们可以配置影响客户端和服务器之间正在进行的通信的各个方面,例如超时,缓存,HTTP请求方法等。

该URLConnection的类提供了配置连接下面的方法:

    setConnectTimeout(int timeout):设置连接超时(以毫秒为单位)。一个java.net.SocketTimeoutException如果超时可以建立连接之前被抛出。超时为零表示无限超时(默认值)。

    setReadTimeout(int timeout):设置读取超时(以毫秒为单位)。超时到期后,没有可用于从连接的输入流中读取的数据,将引发SocketTimeoutException。超时为零表示无限超时(默认值)。

    setDefaultUseCaches(boolean default):设置URLConnection是否默认使用缓存(默认为true)。此方法会影响URLConnection类的未来实例。

    setUseCaches(boolean useCaches):设置此连接是否使用缓存(默认为true)。

    setDoInput(boolean doInput):设置此URLConnection是否可用于从服务器读取内容(默认为true)。

    setDoOutput(boolean doOutput):设置是否可以使用此URLConnection将数据发送到服务器(默认为false)。

    setIfModifiedSince(long time):设置客户端检索的内容的最后修改时间,主要用于HTTP协议。例如,如果服务器发现内容自指定时间以来没有改变,则它不获取内容并返回状态代码304-未修改。如果客户端的修改时间超过了指定时间,则客户端将获得新鲜内容。

    setAllowUserInteraction(boolean allow):启用或禁用用户交互,例如,如果需要,弹出一个身份验证对话框(默认为false)。

    setDefaultAllowUserInteraction(boolean default):为所有未来的URLConnection对象设置用户交互的默认值。

    setRequestProperty(String key,String value):设置由key = value对指定的常规请求属性。如果具有密钥的属性已存在,则旧值将被新值覆盖。

请注意,应在建立连接之前调用这些方法。如果已建立连接,则某些方法会抛出IllegalStateException。

此外,子类HttpURLConnection提供了以下用于使用HTTP特定功能配置连接的方法

    setRequestMethod(String method):设置URL请求的方法,它是HTTP方法GET,POST,HEAD,OPTIONS,PUT,DELETE和TRACE之一。默认方法是GET(注意:这里方法类型必须大写)。

    setChunkedStreamingMode(int chunkLength):当高级内容未知内容长度时,启用HTTP请求主体的流式传输而不进行内部缓冲。

    setFixedLengthStreamingMode(long contentLength):当高级已知内容长度时,启用HTTP请求主体的流式传输而不进行内部缓冲。

    setFollowRedirects(boolean follow):此静态方法设置是否应该由此类的未来对象自动跟随HTTP重定向(默认为true)。

    setInstanceFollowRedirects(boolean follow):设置HTTP重定向是否应该自动跟随此HttpURLConnection类的实例(默认为true)。

 
阅读标题字段

建立连接后,服务器将处理URL请求并发回包含元数据和实际内容的响应。元数据是key = value对的集合,称为标题字段。

标题字段显示有关服务器,状态代码,协议信息等的信息。实际内容可以是文本,HTML,图像等,具体取决于文档的类型。

所述的URLConnection类提供用于读取头字段下面的方法:

 

    getHeaderFields():返回包含所有标题字段的映射。键是字段名称,值是String列表,表示相应的字段值。

    getHeaderField(int n):读取第n个头字段的值。

    getHeaderField(String name):读取指定头字段的值。

    getHeaderFieldKey(int n):读取第n个头字段的键。

    getHeaderFieldDate(String name,long default):读取解析为Date的命名字段的值。如果字段丢失或值格式错误,则返回默认值。

    getHeaderFieldInt(String name,int default):读取被解析为整数的命名字段的值。如果字段丢失或值格式错误,则返回默认值。

    getHeaderFieldLong(String name,long default):读取被解析为长数字的命名字段的值。如果字段丢失或值格式错误,则返回默认值。

这些是读取任何标题字段的一般方法。对于一些经常访问的头字段,URLConnection类提供了更具体的方法:

    getContentEncoding():读取内容编码头字段的值,该字段指示内容的编码类型。

    getContentLength():读取content-length头字段的值,该字段指示内容的大小(以字节为单位)。

    getContentType():读取content-type头字段的值,该字段指示内容的类型。

    getDate():读取日期标题字段的值,该字段指示服务器上的日期时间。

    getExpiration():读取expires头字段的值,指示响应被视为过时的时间。这是用于缓存控制。

    getLastModified():读取上次修改的头字段的值,该字段指示内容的上次​​修改时间。

子类HttpURLConnection提供了另一种方法:

    getResponseCode():返回服务器发送的HTTP状态码。

请注意,读取头字段时,将隐式建立连接,而不调用connect()。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义枚举typeHandler

1.定义枚举类 package com.learn.ssm.chapter4.enumeration; public enum SexEnum {MALE(1, "男"),FEMALE(0, "女");private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id id;}public String getName…

Python 基本数据类型 (二) - 字符串

str.expandtabs([tabsize]): str类型的expandtabs函数,有一个可选参数tabsize(制表符大小)详细来说,expandtabs的意思就是,将字符串中的制表符\t,全部用空格来替换。至于用多少个空格,需要参考制…

如何预防后台被攻击?Tomcat 的安全配置来啦!

安全是系统架构中最重要的关注点之一,通常情况下,所说的安全涵盖网络安全、数据安全、操作系统安全、服务器安全以及应用系统安全等诸多方面。Tomcat 是一个免费的开放源代码 的Web应用服务器,技术先进、性能稳定。由于它优秀的稳定性以及丰富…

position详解

导读: position的定位类型有:static(默认值)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)、sticky(粘性定位)。其中最常用的就是relative和ab…

原型设计列表

PencilFramerShireframeUIDesignerBalsamiq MockupsMockup BuilderMockupFrameBoxiPhone MockupGOOFLOWWireframeSketcherFluidIAIndigo StudioOrigamiQuartz ComposerJustprotoAvocadoPaintCodeMockplus(摩客)墨刀

IDC机房跳线

服务网卡口与配线架 这里有一根网线 记录方式 签 A:23FM-23U-T07 (配线架网线) B:23FM-23U-NIC1(服务器网线) 在配线架的机柜旁边一定写明了 跳线的对面的 交换和配线架的网线位置 比如 记录方式为 A:23FA-23FJ-T07 B:H3C-22U-T04 转载于:https://www…

常用的mysql sql_mode

ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中 NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列的插入。默认设置下&…

(转)Java atomic原子类的使用方法和原理(一)

在讲atomic原子类之前先看一个小例子: public class UseAtomic { public static void main(String[] args) { AtomicInteger atomicIntegernew AtomicInteger(); for(int i0;i<10;i){ Thread tnew Thread(new AtomicTest(atomicInteger)); t.start(); try { t.join(0); } ca…

Spring Boot 单例模式中依赖注入问题

在日常项目开发中&#xff0c;单例模式可以说是最常用到的设计模式&#xff0c;项目也常常在单例模式中需要使用 Service 逻辑层的方法来实现某些功能。通常可能会使用 Resource 或者 Autowired 来自动注入实例&#xff0c;然而这种方法在单例模式中却会出现 NullPointExceptio…

linux(centOS7,mini),python环境的搭建

今天想试一试python在linux下的工作&#xff0c;在vmware中安装了centOS7版本的linux&#xff0c;先前装过一个带GUI的&#xff0c;但是感觉在虚拟机理跑的太慢&#xff0c;干脆直接装一个最精简的mini版&#xff0c;试一下ifconfig&#xff0c;vim啥的全部commend not found。…

VO,BO,PO,DO,DTO的区别

面对这个图&#xff0c;让我们先从承上启下的DTO开始入手 DTO&#xff08;Data Transfer Object&#xff09;数据传输对象 这个传输通常指的前后端之间的传输 DTO是一个比较特殊的对象&#xff0c;他有两种存在形式&#xff1a; 在后端&#xff0c;他的存在形式是java对象&…

Windows下pip 离线包安装

pip在线安装十分方便&#xff0c;有时候某些服务器并没有直接联网&#xff0c;需要下载好安装包上传到服务器上进行安装&#xff0c;不经常用&#xff0c;还是有点小麻烦的。 安装Python之后&#xff0c;将下载好的安装包包放在Python安装的根目录下使用pip install packagenam…

mysql维护

1.通过 show engine innodb status命令来查看这些线程的状态&#xff1a; mysql>show engine innodb status\G *************************** 1. row ***************************Type: InnoDBName: #####################################################################…

VMware设置及linux静态ip设置

1. VMWARE虚拟机NAT模式上网设置 1.1. VM虚拟机设置 1.1.1. 虚拟机全局设置 启动虚拟机选择【虚拟网络编辑器】 如果需要管理员权限点【更改设置】&#xff0c;没有提示这忽略这一步 选择NAT模式&#xff0c;更改下面的子网IP&#xff0c;改成你需要的任何一个子网网段&…

InnoDB内存优化

1&#xff0e;InnoDB缓存机制 InnoDB用一块内存区做IO缓存池&#xff0c;该缓存池不仅用来缓存InnoDB的索引块&#xff0c;而且也用来缓存InnoDB的数据块&#xff0c;这一点与MyISAM不同。 在内部&#xff0c;InnoDB缓存池逻辑上由 free list、flush list和LRU list组成。顾名…

问题 L: 超超的中等意思

问题 L: 超超的中等意思 时间限制: 1 Sec 内存限制: 128 MB提交: 366 解决: 27[提交] [状态] [命题人:jsu_admin]题目描述 已知p,q,k和一个难搞得多项式(pxqy)^k。想知道在给定a和b的值下计算多项式展开后x^a*y^b得系数s。输入 多组输入&#xff0c;每组数据一行输入p,q,k,a,…

改善带有 order by子句或group子句SQL的性能

如果通过 show global status 看到 sort_merge_passes 的值很大&#xff0c;可以考虑通过调整参数sort_buffer_size的值来增大排序缓存区&#xff0c;以改善带有 order by子句或group子句SQL的性能。 对于无法通过索引进行连接操作的查询&#xff0c;可以尝试通过增大&#xf…

springboot系列十五、springboot集成PageHelper

一、介绍 项目中经常会遇到分页&#xff0c;PageHelper为我们解决了这个问题。本质上实现了Mybatis的拦截器&#xff0c;作了分页处理。 二、配置PageHelper 1、引入依赖 pagehelper-spring-boot-starter对了pagehelper做了封装&#xff0c;减少 了配置文件&#xff0c;只需要在…

SELinux 引起的 Docker 启动失败

问题描述 Linux OS 版本 CentOS Linux release 7.2.1511 (Core) 启动Docker service docker start 启动失败信息 原因分析 Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disabl...nab…

第十一章 Helm-kubernetes的包管理器(上)

Helm - K8s的包管理器 11.1 Why Helm K8s能够很好的组织和编排容器&#xff0c;但它缺少一个更高层次的应用打包工具&#xff0c;Helm就是干这个的。 比如对于一个MySQL服务&#xff0c;K8s需要部署如下对象&#xff1a; &#xff08;1&#xff09;Service&#xff0c;让外界能…