20230628 java.net.URLConnection

发布时间 2023-08-29 17:07:02作者: 流星<。)#)))≦

介绍

  • java.net.URLConnection
  • public abstract class URLConnection
  • 如果想从某个 Web 资源获取更多信息,那么应该使用 URLConnection 类,通过它能够得到比基本的 URL 类更多的控制功能

API

static

  • getDefaultUseCaches, setDefaultUseCaches
  • getFileNameMap, setFileNameMap
  • setDefaultAllowUserInteraction, getDefaultAllowUserInteraction
  • setDefaultRequestProperty, getDefaultRequestProperty
  • setContentHandlerFactory
  • guessContentTypeFromName
  • guessContentTypeFromStream

public

  • connect
    • 连接远程资源并获取响应头信息
  • getInputStream, getOutputStream
    • 返回从资源读取信息或向资源写入信息的流
  • getContent
    • 选择适当的内容处理器,以便读取资源数据并将它转换成对象
  • getURL
    • 获取 URL
  • getDefaultUseCaches, setDefaultUseCaches
  • getPermission
    • 返回一个权限对象,表示建立此对象所表示的连接所需的权限

请求属性

  • setDoInput, getDoInput
    • 如果 doInput 为 true ,那么用户可以接收来自该 URLConnection 的输入
  • setDoOutput, getDoOutput
    • 如果 doOutput 为 true ,那么用户可以将输出发送到该 URLConnection
  • setIfModifiedSince, getIfModifiedSince
    • 属性 ifModifiedSince 用于配置该 URLConnection 对象,使它只获取那些自从某个给定时间以来被修改过的数据。
    • 调用方法时需要传人的 time 参数指的是从格林尼治时间 1970 年 1 月 1 日午夜开始计算的秒数
  • setUseCaches, getUseCaches
    • 如果 useCaches 为 true ,那么数据可以从本地缓存中得到。
    • 请注意, URLConnection 本身并不维护这样一个缓存,缓存必须由浏览器之类的外部程序提供
  • setAllowUserInteraction, getAllowUserInteraction
    • 如果 allowUserInteraction 为 true ,那么可以查询用户的口令。
    • 请注意, URLConnection 本身并不提供这种查询功能。查询必须由浏览器或浏览器插件之类的外部程序实现
  • setConnectTimeout, getConnectTimeout
    • 设置或得到连接超时时限(单位:毫秒) 。
    • 如果在连接建立之前就已经达到了超时的时限,那么相关联的输入流的 connect 方法就会抛出一个 SocketTimeoutException 异常
  • setReadTimeout, getReadTimeout
    • 设置读取数据的超时时限(单位:毫秒) 。
    • 如果在一个读操作成功之前就已经达到了超时的时限,那么 read 方法就会抛出一个 SocketTimeoutException 异常

设置 kv 对:

  • setRequestProperty, getRequestProperty
  • addRequestProperty
  • getRequestProperties

响应消息头

  • getHeaderFields
  • getHeaderField, getHeaderFieldLong, getHeaderFieldInt, getHeaderFieldDate
    • 返回消息头的 value
    • getHeaderField 返回 String ,其他三个方法进行转换
    • getHeaderFieldDate 通过 Date.parse 转换
    • getHeaderField(0) 获取响应状态行,例如 HTTP/1.1 200 OK
  • getHeaderFieldKey
    • String getHeaderFieldKey(int n)
    • 返回消息头的 key
    • n 从 1 开始
常用的消息头类型
  • getContentLength, getContentLengthLong
    • content-length
  • getLastModified
    • last-modified
  • getDate
    • date
  • getContentType
    • content-type
  • getContentEncoding
    • content-encoding
  • getExpiration
    • expires