- All Implemented Interfaces:
Closeable,AutoCloseable
注意:除响应体外,所有属性都是不可变的。响应体是一次性资源,必须在读取后关闭,且只能消费一次。
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionbody()获取响应体。获取缓存控制指令。获取缓存响应。获取 RFC 7235 认证挑战列表。voidclose()关闭响应体。intcode()获取 HTTP 状态码。获取 TLS 握手信息。获取指定名称的第一个头部值。获取指定名称的第一个头部值,带默认值。headers()获取所有响应头部。获取指定名称的头部值列表。boolean检查响应是否为重定向。boolean检查响应是否成功(状态码在 [200..300) 范围内)。message()获取 HTTP 状态消息。获取网络响应。创建新的 Builder 实例,基于当前 Response。peekBody(long byteCount) 预览响应体内容,最多读取指定字节数。获取前一个响应。org.miaixz.bus.core.net.Protocolprotocol()获取使用的 HTTP 协议。long获取接收响应头部的时间戳。request()获取发起此响应的原始请求。long获取发送请求的时间戳。toString()返回响应的字符串表示。trailers()获取响应尾部(trailer headers)。
-
Method Details
-
request
获取发起此响应的原始请求。注意:此请求可能与应用程序发出的请求不同,可能被 HTTP 客户端修改(如添加 Content-Length 头部) 或因重定向/认证生成新请求(URL 可能不同)。
- Returns:
- 发起响应的 Request 对象
-
protocol
public org.miaixz.bus.core.net.Protocol protocol()获取使用的 HTTP 协议。- Returns:
- 协议,如 HTTP/1.1、HTTP/2
-
code
public int code()获取 HTTP 状态码。- Returns:
- 状态码(如 200、404)
-
isSuccessful
public boolean isSuccessful()检查响应是否成功(状态码在 [200..300) 范围内)。- Returns:
- true 如果请求被成功接收、理解和接受
-
message
获取 HTTP 状态消息。- Returns:
- 状态消息(如 "OK"、"Not Found")
-
handshake
获取 TLS 握手信息。- Returns:
- Handshake 对象(非 TLS 连接为 null)
-
headers
获取指定名称的头部值列表。- Parameters:
name- 头部名称- Returns:
- 头部值列表(可能为空)
-
header
获取指定名称的第一个头部值。- Parameters:
name- 头部名称- Returns:
- 头部值(不存在时为 null)
-
header
获取指定名称的第一个头部值,带默认值。- Parameters:
name- 头部名称defaultValue- 默认值(不存在时返回)- Returns:
- 头部值或默认值
-
headers
获取所有响应头部。- Returns:
- Headers 对象
-
trailers
获取响应尾部(trailer headers)。注意:必须在响应体完全消费后调用,否则抛出 IllegalStateException。
- Returns:
- 尾部 Headers 对象(可能为空)
- Throws:
IOException- 如果无法获取尾部IllegalStateException- 如果响应体未完全消费
-
peekBody
预览响应体内容,最多读取指定字节数。返回新的 ResponseBody,包含最多 byteCount 字节的响应体内容。如果响应体不足 byteCount 字节, 返回全部内容;如果超过,则截断。
注意:此方法会将请求的字节加载到内存,建议设置合理的 byteCount(如 1MB)。 在响应体消费后调用会抛出错误。
- Parameters:
byteCount- 最大预览字节数- Returns:
- 新的 ResponseBody 对象
- Throws:
IOException- 如果读取响应体失败
-
body
获取响应体。注意:响应体是一次性资源,必须关闭且只能消费一次。对于
cacheResponse、networkResponse、priorResponse返回的响应,此方法返回 null。- Returns:
- ResponseBody 对象(可能为 null)
-
newBuilder
创建新的 Builder 实例,基于当前 Response。- Returns:
- Builder 实例
-
isRedirect
public boolean isRedirect()检查响应是否为重定向。- Returns:
- true 如果状态码表示重定向(300、301、302、303、307、308)
-
networkResponse
获取网络响应。如果响应直接从网络获取(未使用缓存),返回原始响应;否则返回 null。 返回的响应体不应被读取。
- Returns:
- 网络 Response 对象(可能为 null)
-
cacheResponse
获取缓存响应。如果响应从缓存获取,返回缓存响应;否则返回 null。对于条件 GET 请求, 可能同时存在缓存和网络响应。返回的响应体不应被读取。
- Returns:
- 缓存 Response 对象(可能为 null)
-
priorResponse
获取前一个响应。如果响应由重定向或认证挑战触发,返回前一个响应;否则返回 null。 返回的响应体不应被读取(已消费)。
- Returns:
- 前一个 Response 对象(可能为 null)
-
challenges
获取 RFC 7235 认证挑战列表。对于状态码 401(未授权),返回 "WWW-Authenticate" 挑战; 对于状态码 407(代理未授权),返回 "Proxy-Authenticate" 挑战; 其他状态码返回空列表。
- Returns:
- 认证挑战列表(可能为空)
-
cacheControl
获取缓存控制指令。即使响应不包含 "Cache-Control" 头部,也返回非 null 的 CacheControl 对象。 使用延迟初始化以提高性能。
- Returns:
- CacheControl 对象
-
sentRequestAtMillis
public long sentRequestAtMillis()获取发送请求的时间戳。- Returns:
- 发送请求的毫秒时间戳(System.currentTimeMillis)
-
receivedResponseAtMillis
public long receivedResponseAtMillis()获取接收响应头部的时间戳。- Returns:
- 接收响应的毫秒时间戳(System.currentTimeMillis)
-
close
public void close()关闭响应体。等价于调用
body().close()。对于无响应体的响应(如cacheResponse、networkResponse、priorResponse),调用会抛出异常。- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IllegalStateException- 如果响应无响应体
-
toString
返回响应的字符串表示。
-