Module bus.http

Class Headers

java.lang.Object
org.miaixz.bus.http.Headers

public class Headers extends Object
HTTP 消息的头部字段

维护头部字段的顺序,值存储为未解释的字符串,移除首尾空白。 实例是不可变的,建议通过 RequestResponse 解释头部信息。

Since:
Java 17+
Author:
Kimi Liu
  • Method Details

    • of

      public static Headers of(String... namesAndValues)
      从名称和值数组创建 Headers 实例

      要求参数数量为偶数,交替为名称和值。

      Parameters:
      namesAndValues - 名称和值数组
      Returns:
      Headers 实例
      Throws:
      NullPointerException - 如果 namesAndValues 为 null
      IllegalArgumentException - 如果参数数量奇数或包含 null
    • of

      public static Headers of(Map<String,String> headers)
      从映射创建 Headers 实例
      Parameters:
      headers - 头部名称和值映射
      Returns:
      Headers 实例
      Throws:
      NullPointerException - 如果 headers 为 null
      IllegalArgumentException - 如果名称或值包含 null
    • contentLength

      public static long contentLength(Response response)
      获取响应的 Content-Length
      Parameters:
      response - 响应
      Returns:
      Content-Length 值(无效时为 -1)
    • contentLength

      public static long contentLength(Headers headers)
      获取头部的 Content-Length
      Parameters:
      headers - 头部
      Returns:
      Content-Length 值(无效时为 -1)
    • varyMatches

      public static boolean varyMatches(Response cachedResponse, Headers cachedRequest, Request newRequest)
      检查 Vary 头部是否匹配
      Parameters:
      cachedResponse - 缓存响应
      cachedRequest - 缓存请求
      newRequest - 新请求
      Returns:
      true 如果 Vary 头部匹配
    • hasVaryAll

      public static boolean hasVaryAll(Response response)
      检查是否存在 Vary: * 头部
      Parameters:
      response - 响应
      Returns:
      true 如果存在 Vary: *
    • hasVaryAll

      public static boolean hasVaryAll(Headers responseHeaders)
      检查是否存在 Vary: * 头部
      Parameters:
      responseHeaders - 响应头部
      Returns:
      true 如果存在 Vary: *
    • varyFields

      public static Set<String> varyFields(Headers responseHeaders)
      获取 Vary 字段集合
      Parameters:
      responseHeaders - 响应头部
      Returns:
      Vary 字段集合
    • varyHeaders

      public static Headers varyHeaders(Response response)
      获取影响响应体的请求头部
      Parameters:
      response - 响应
      Returns:
      影响响应体的头部
    • varyHeaders

      public static Headers varyHeaders(Headers requestHeaders, Headers responseHeaders)
      获取影响响应体的请求头部
      Parameters:
      requestHeaders - 请求头部
      responseHeaders - 响应头部
      Returns:
      影响响应体的头部
    • parseChallenges

      public static List<Challenge> parseChallenges(Headers responseHeaders, String headerName)
      解析 RFC 7235 认证
      Parameters:
      responseHeaders - 响应头部
      headerName - 头部名称
      Returns:
      认证挑战列表
    • receiveHeaders

      public static void receiveHeaders(CookieJar cookieJar, UnoUrl url, Headers headers)
      处理接收到的 Cookie 头部
      Parameters:
      cookieJar - Cookie 管理器
      url - URL
      headers - 头部
    • hasBody

      public static boolean hasBody(Response response)
      检查响应是否包含消息体
      Parameters:
      response - 响应
      Returns:
      true 如果响应包含消息体
    • skipUntil

      public static int skipUntil(String input, int pos, String characters)
      跳到指定字符
      Parameters:
      input - 输入字符串
      pos - 起始位置
      characters - 目标字符集
      Returns:
      目标字符位置
    • skipWhitespace

      public static int skipWhitespace(String input, int pos)
      跳过空白字符
      Parameters:
      input - 输入字符串
      pos - 起始位置
      Returns:
      非空白字符位置
    • parseSeconds

      public static int parseSeconds(String value, int defaultValue)
      解析秒数
      Parameters:
      value - 字符串值
      defaultValue - 默认值
      Returns:
      秒数
    • newBuilder

      public Headers.Builder newBuilder()
      创建新的 Builder 实例
      Returns:
      Builder 实例
    • hashCode

      public int hashCode()
      计算哈希码
      Overrides:
      hashCode in class Object
      Returns:
      哈希码值
    • get

      public String get(String name)
      获取指定名称的最后一个头部值
      Parameters:
      name - 头部名称
      Returns:
      头部值(不存在时为 null)
    • getDate

      public Date getDate(String name)
      获取指定名称的日期头部值
      Parameters:
      name - 头部名称
      Returns:
      日期值(无效时为 null)
    • getInstant

      public Instant getInstant(String name)
      获取指定名称的 Instant 头部值
      Parameters:
      name - 头部名称
      Returns:
      Instant 值(无效时为 null)
    • size

      public int size()
      获取头部数量
      Returns:
      头部数量
    • name

      public String name(int index)
      获取指定索引的头部名称
      Parameters:
      index - 索引
      Returns:
      头部名称
    • value

      public String value(int index)
      获取指定索引的头部值
      Parameters:
      index - 索引
      Returns:
      头部值
    • names

      public Set<String> names()
      获取头部名称集合
      Returns:
      不可修改的头部名称集合
    • values

      public List<String> values(String name)
      获取指定名称的头部值列表
      Parameters:
      name - 头部名称
      Returns:
      不可修改的头部值列表
    • byteCount

      public long byteCount()
      获取头部编码字节数
      Returns:
      编码字节数
    • equals

      public boolean equals(Object other)
      比较两个 Headers 对象是否相等
      Overrides:
      equals in class Object
      Parameters:
      other - 另一个对象
      Returns:
      true 如果头部完全相等
    • toString

      public String toString()
      返回头部的字符串表示
      Overrides:
      toString in class Object
      Returns:
      头部字符串
    • toMultimap

      public Map<String,List<String>> toMultimap()
      转换为多值映射
      Returns:
      头部名称到值列表的映射