java.lang.Object
org.miaixz.bus.http.Builder
HTTP 相关的实用工具类
提供处理 HTTP 请求和响应的工具方法,包括数据解析、编码、集合操作、日期格式化等。
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringACK 命令static final String[]浏览器兼容的日期格式static final DateFormat[]浏览器兼容的日期格式器static final StringCONNECT 命令static final StringCONNECTED 命令static final Headers空头部static final ResponseBody空响应体static final StringERROR 命令static final long最大日期值(9999年12月31日)static final StringMESSAGE 命令static final Comparator<String> 自然顺序比较器static final org.miaixz.bus.core.io.ByteString引号字符串分隔符static final StringSEND 命令static final StringSUBSCRIBE 命令static final org.miaixz.bus.core.io.ByteString令牌分隔符static final StringUNKNOWN 命令static final StringUNSUBSCRIBE 命令static final TimeZoneGMT 时区 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddSuppressedIfPossible(Throwable e, Throwable suppressed) 添加抑制的异常static CharsetbomAwareCharset(org.miaixz.bus.core.io.source.BufferSource source, Charset charset) 根据 BOM 选择字符集static StringcanonicalizeHost(String host) 规范化主机名static intcheckDuration(String name, long duration, TimeUnit unit) 检查持续时间static voidcheckOffsetAndCount(long arrayLength, long offset, long count) 检查数组偏移和计数static String[]拼接字符串到数组static intdecodeHexDigit(char c) 解码十六进制字符static intdelimiterOffset(String input, int pos, int limit, char delimiter) 查找单个分隔符位置static intdelimiterOffset(String input, int pos, int limit, String delimiters) 查找分隔符位置static boolean尝试耗尽数据源static String格式化日期static StringhostHeader(UnoUrl url, boolean includeDefaultPort) 生成主机头部static <T> List<T> immutableList(List<T> list) 创建不可修改的列表static <T> List<T> immutableList(T... elements) 创建不可修改的列表static <K,V> Map <K, V> immutableMap(Map<K, V> map) 创建不可修改的映射static intindexOf(Comparator<String> comparator, String[] array, String value) 查找字符串在数组中的索引static intindexOfControlOrNonAscii(String input) 查找控制字符或非 ASCII 字符的索引static String[]intersect(Comparator<? super String> comparator, String[] first, String[] second) 获取两个字符串数组的交集static booleannonEmptyIntersection(Comparator<String> comparator, String[] first, String[] second) 检查两个字符串数组是否存在交集static Date解析日期字符串static booleansameConnection(UnoUrl a, UnoUrl b) 检查两个 URL 是否可以复用连接static boolean读取数据源直到耗尽或超时static intskipLeadingAsciiWhitespace(String input, int pos, int limit) 跳过前导 ASCII 空白字符static intskipTrailingAsciiWhitespace(String input, int pos, int limit) 跳过尾部 ASCII 空白字符static ThreadFactorythreadFactory(String name, boolean daemon) 创建线程工厂static List<Http2Header> toHeaderBlock(Headers headers) 将 Headers 转换为 HTTP/2 头部列表static HeaderstoHeaders(List<Http2Header> headerBlock) 将 HTTP/2 头部列表转换为 Headersstatic StringtrimSubstring(String string, int pos, int limit) 修剪字符串static booleanverifyAsIpAddress(String host) 检查是否为 IP 地址
-
Field Details
-
MAX_DATE
public static final long MAX_DATE最大日期值(9999年12月31日)- See Also:
-
EMPTY_HEADERS
空头部 -
EMPTY_RESPONSE
空响应体 -
UTC
GMT 时区 -
NATURAL_ORDER
自然顺序比较器 -
QUOTED_STRING_DELIMITERS
public static final org.miaixz.bus.core.io.ByteString QUOTED_STRING_DELIMITERS引号字符串分隔符 -
TOKEN_DELIMITERS
public static final org.miaixz.bus.core.io.ByteString TOKEN_DELIMITERS令牌分隔符 -
BROWSER_COMPATIBLE_DATE_FORMAT_STRINGS
浏览器兼容的日期格式 -
BROWSER_COMPATIBLE_DATE_FORMATS
浏览器兼容的日期格式器 -
CONNECT
CONNECT 命令- See Also:
-
CONNECTED
CONNECTED 命令- See Also:
-
SEND
SEND 命令- See Also:
-
MESSAGE
MESSAGE 命令- See Also:
-
SUBSCRIBE
SUBSCRIBE 命令- See Also:
-
UNSUBSCRIBE
UNSUBSCRIBE 命令- See Also:
-
ACK
ACK 命令- See Also:
-
UNKNOWN
UNKNOWN 命令- See Also:
-
ERROR
ERROR 命令- See Also:
-
-
Constructor Details
-
Builder
public Builder()构造函数
-
-
Method Details
-
addSuppressedIfPossible
添加抑制的异常- Parameters:
e- 主异常suppressed- 抑制的异常
-
checkOffsetAndCount
public static void checkOffsetAndCount(long arrayLength, long offset, long count) 检查数组偏移和计数- Parameters:
arrayLength- 数组长度offset- 偏移量count- 计数- Throws:
ArrayIndexOutOfBoundsException- 如果参数无效
-
discard
public static boolean discard(org.miaixz.bus.core.io.source.Source source, int timeout, TimeUnit timeUnit) 尝试耗尽数据源- Parameters:
source- 数据源timeout- 超时时间timeUnit- 时间单位- Returns:
- true 如果成功耗尽
-
skipAll
public static boolean skipAll(org.miaixz.bus.core.io.source.Source source, int duration, TimeUnit timeUnit) throws IOException 读取数据源直到耗尽或超时- Parameters:
source- 数据源duration- 超时时间timeUnit- 时间单位- Returns:
- true 如果成功耗尽
- Throws:
IOException- 如果读取失败
-
immutableList
创建不可修改的列表- Type Parameters:
T- 列表元素类型- Parameters:
list- 原始列表- Returns:
- 不可修改的列表
-
immutableMap
创建不可修改的映射- Type Parameters:
K- 键类型V- 值类型- Parameters:
map- 原始映射- Returns:
- 不可修改的映射
-
immutableList
创建不可修改的列表- Type Parameters:
T- 元素类型- Parameters:
elements- 元素数组- Returns:
- 不可修改的列表
-
threadFactory
创建线程工厂- Parameters:
name- 线程名称daemon- 是否为守护线程- Returns:
- 线程工厂
-
intersect
public static String[] intersect(Comparator<? super String> comparator, String[] first, String[] second) 获取两个字符串数组的交集- Parameters:
comparator- 比较器first- 第一个数组second- 第二个数组- Returns:
- 交集数组
-
nonEmptyIntersection
public static boolean nonEmptyIntersection(Comparator<String> comparator, String[] first, String[] second) 检查两个字符串数组是否存在交集- Parameters:
comparator- 比较器first- 第一个数组second- 第二个数组- Returns:
- true 如果存在交集
-
hostHeader
生成主机头部- Parameters:
url- URLincludeDefaultPort- 是否包含默认端口- Returns:
- 主机头部字符串
-
indexOf
查找字符串在数组中的索引- Parameters:
comparator- 比较器array- 数组value- 值- Returns:
- 索引(不存在时为 -1)
-
concat
拼接字符串到数组- Parameters:
array- 数组value- 值- Returns:
- 新数组
-
skipLeadingAsciiWhitespace
跳过前导 ASCII 空白字符- Parameters:
input- 输入字符串pos- 起始位置limit- 结束位置- Returns:
- 非空白字符位置
-
skipTrailingAsciiWhitespace
跳过尾部 ASCII 空白字符- Parameters:
input- 输入字符串pos- 起始位置limit- 结束位置- Returns:
- 非空白字符位置
-
trimSubstring
修剪字符串- Parameters:
string- 输入字符串pos- 起始位置limit- 结束位置- Returns:
- 修剪后的字符串
-
delimiterOffset
查找分隔符位置- Parameters:
input- 输入字符串pos- 起始位置limit- 结束位置delimiters- 分隔符集合- Returns:
- 分隔符位置
-
delimiterOffset
查找单个分隔符位置- Parameters:
input- 输入字符串pos- 起始位置limit- 结束位置delimiter- 分隔符- Returns:
- 分隔符位置
-
canonicalizeHost
规范化主机名- Parameters:
host- 主机名- Returns:
- 规范化主机名(无效时为 null)
-
indexOfControlOrNonAscii
查找控制字符或非 ASCII 字符的索引- Parameters:
input- 输入字符串- Returns:
- 索引(不存在时为 -1)
-
verifyAsIpAddress
检查是否为 IP 地址- Parameters:
host- 主机名- Returns:
- true 如果是 IP 地址
-
bomAwareCharset
public static Charset bomAwareCharset(org.miaixz.bus.core.io.source.BufferSource source, Charset charset) throws IOException 根据 BOM 选择字符集- Parameters:
source- 数据源charset- 默认字符集- Returns:
- 字符集
- Throws:
IOException- 如果读取失败
-
checkDuration
检查持续时间- Parameters:
name- 参数名称duration- 持续时间unit- 时间单位- Returns:
- 持续时间(毫秒)
- Throws:
IllegalArgumentException- 如果参数无效
-
decodeHexDigit
public static int decodeHexDigit(char c) 解码十六进制字符- Parameters:
c- 字符- Returns:
- 解码值(无效时为 -1)
-
toHeaders
将 HTTP/2 头部列表转换为 Headers- Parameters:
headerBlock- HTTP/2 头部列表- Returns:
- Headers 实例
-
toHeaderBlock
将 Headers 转换为 HTTP/2 头部列表- Parameters:
headers- Headers 实例- Returns:
- HTTP/2 头部列表
-
sameConnection
检查两个 URL 是否可以复用连接- Parameters:
a- 第一个 URLb- 第二个 URL- Returns:
- true 如果可以复用连接
-
parse
解析日期字符串- Parameters:
value- 日期字符串- Returns:
- 日期对象(无效时为 null)
-
format
格式化日期- Parameters:
value- 日期对象- Returns:
- 日期字符串
-