类响应
实现 HTTP 响应的方法。
以下所有示例都假设 $response
是此类的实例。
获取标题值
标题名称不区分大小写,但在解析响应时会规范化为标题大小写。
$val = $response->getHeaderLine('content-type');
将读取 Content-Type 标题。您可以使用以下方法获取所有设置的标题
$response->getHeaders();
获取响应正文
您可以使用以下方法访问响应正文流
$content = $response->getBody();
您可以使用以下方法获取正文字符串
$content = $response->getStringBody();
如果您的响应正文为 XML 或 JSON,则可以使用特定于内容类型的特殊访问器来读取解码后的数据。JSON 数据将作为数组返回,而 XML 数据将作为 SimpleXML 节点返回
// Get as XML
$content = $response->getXml()
// Get as JSON
$content = $response->getJson()
如果无法解码响应,将返回 null。
检查状态码
您可以使用以下方法访问响应状态码
$content = $response->getStatusCode();
常量
-
字符串
METHOD_DELETE ¶'DELETE'
HTTP DELETE 方法
-
字符串
METHOD_GET ¶'GET'
HTTP GET 方法
-
字符串
METHOD_HEAD ¶'HEAD'
HTTP HEAD 方法
-
字符串
METHOD_OPTIONS ¶'OPTIONS'
HTTP OPTIONS 方法
-
字符串
METHOD_PATCH ¶'PATCH'
HTTP PATCH 方法
-
字符串
METHOD_POST ¶'POST'
HTTP POST 方法
-
字符串
METHOD_PUT ¶'PUT'
HTTP PUT 方法
-
字符串
METHOD_TRACE ¶'TRACE'
HTTP TRACE 方法
-
整数
STATUS_ACCEPTED ¶202
HTTP 202 代码
-
整数
STATUS_CREATED ¶201
HTTP 201 代码
-
整数
STATUS_FOUND ¶302
HTTP 302 代码
-
整数
STATUS_MOVED_PERMANENTLY ¶301
HTTP 301 代码
-
整数
STATUS_NON_AUTHORITATIVE_INFORMATION ¶203
HTTP 203 代码
-
整数
STATUS_NO_CONTENT ¶204
HTTP 204 代码
-
整数
STATUS_OK ¶200
HTTP 200 代码
-
整数
STATUS_PERMANENT_REDIRECT ¶308
HTTP 308 代码
-
整数
STATUS_SEE_OTHER ¶303
HTTP 303 代码
-
整数
STATUS_TEMPORARY_REDIRECT ¶307
HTTP 307 代码
属性摘要
-
$_cookies protected
数组
响应中的 cookie 数组。
-
$_json protected
混合
缓存的解码 JSON 数据。
-
$_xml protected
SimpleXMLElement|null
缓存的解码 XML 数据。
-
$code protected
整数
响应的状态码。
-
$cookies protected
Cake\Http\Cookie\CookieCollection|null
Cookie Collection 实例
-
$headerNames protected
数组
规范化标题名称到用于注册标题的原始名称的映射。
-
$headers protected
数组
所有注册标题的列表,作为键 => 值数组。
-
$reasonPhrase protected
字符串
状态码的原因短语
方法摘要
-
__construct() public
构造函数
-
_decodeGzipBody() protected
解压缩 gzip 响应。
-
_getBody() protected
提供魔法 __get() 支持。
-
_getCookies() protected
$this->cookies
的属性访问器 -
_getHeaders() protected
提供魔法 __get() 支持。
-
_getJson() protected
获取响应正文作为 JSON 解码数据。
-
_getXml() protected
获取响应正文作为 XML 解码数据。
-
_parseHeaders() protected
解析必要时的标题。
-
buildCookieCollection() protected
从响应头中延迟构建 CookieCollection 和 cookie 对象
-
cookies() public
获取所有 cookie
-
getBody() public
获取消息的正文。
-
getCookie() public
获取单个 cookie 的值。
-
getCookieCollection() public
从此响应中获取 cookie 集合。
-
getCookieData() public
获取单个 cookie 的完整数据。
-
getCookies() public
获取所有 cookie 数据。
-
getEncoding() public
获取编码(如果已设置)。
-
getHeader() public
通过给定的不区分大小写的名称检索消息头值。
-
getHeaderLine() public
检索单个报头的值的逗号分隔字符串。
-
getHeaders() public
检索所有消息头。
-
getJson() public
获取响应正文作为 JSON 解码数据。
-
getProtocolVersion() public
以字符串形式检索 HTTP 协议版本。
-
getReasonPhrase() public
获取与状态码关联的响应原因短语。
-
getStatusCode() public
获取响应状态码。
-
getStringBody() public
获取响应主体作为字符串。
-
getXml() public
获取响应正文作为 XML 解码数据。
-
hasHeader() public
检查通过给定的不区分大小写的名称是否存在报头。
-
isOk() public
检查响应状态码是否在 2xx/3xx 范围内
-
isRedirect() public
检查响应是否具有重定向状态码。
-
isSuccess() public
检查响应状态码是否在 2xx 范围内
-
withAddedHeader() public
返回一个带有指定报头附加给定值的实例。
-
withBody() public
返回一个带有指定消息主体的实例。
-
withHeader() public
返回一个带有提供的报头的实例,替换任何现有值,这些值与任何具有相同不区分大小写名称的报头相同。
-
withProtocolVersion() public
返回一个带有指定 HTTP 协议版本的实例。
-
withStatus() public
返回一个带有指定状态码的实例,以及可选的理由短语。
-
withoutHeader() public
返回一个没有指定报头的实例。
方法详情
__construct() ¶ public
__construct(list<string> $headers = [], string $body = '')
构造函数
参数
-
list<string>
$headers optional 未解析的报头。
-
string
$body optional 响应主体。
_decodeGzipBody() ¶ protected
_decodeGzipBody(string $body): string
解压缩 gzip 响应。
查找 gzip 签名,如果 gzinflate() 存在,则主体将被解压缩。
参数
-
string
$body Gzip 编码主体。
返回
字符串
抛出
Cake\Core\Exception\CakeException
当尝试在没有 gzinflate 的情况下解码 gzip 内容时。
_parseHeaders() ¶ protected
_parseHeaders(list<string> $headers): void
解析必要时的标题。
- 解码状态码和原因短语。
- 解析并规范化报头名称和值。
参数
-
list<string>
$headers 要解析的报头。
返回
void
buildCookieCollection() ¶ protected
buildCookieCollection(): Cake\Http\Cookie\CookieCollection
从响应头中延迟构建 CookieCollection 和 cookie 对象
返回
Cake\Http\Cookie\CookieCollection
getCookie() ¶ public
getCookie(string $name): array|string|null
获取单个 cookie 的值。
参数
-
string
$name cookie 值的名称。
返回
array|string|null
getCookieCollection() ¶ public
getCookieCollection(): Cake\Http\Cookie\CookieCollection
从此响应中获取 cookie 集合。
此方法公开响应的 CookieCollection 实例,允许您直接与 cookie 对象交互。
返回
Cake\Http\Cookie\CookieCollection
getCookieData() ¶ public
getCookieData(string $name): array|null
获取单个 cookie 的完整数据。
参数
-
string
$name cookie 值的名称。
返回
array|null
getHeader() ¶ public
getHeader(string $header): string[]
通过给定的不区分大小写的名称检索消息头值。
此方法返回给定不区分大小写的报头名称的所有报头值的数组。
如果报头未出现在消息中,此方法必须返回一个空数组。
参数
-
string
$header 不区分大小写的报头字段名称。
返回
string[]
getHeaderLine() ¶ public
getHeaderLine(string $name): string
检索单个报头的值的逗号分隔字符串。
此方法以使用逗号连接在一起的字符串形式返回给定不区分大小写的报头名称的所有报头值。
注意:并非所有报头值都适合使用逗号连接来表示。对于此类报头,请改用 getHeader() 并提供您自己的分隔符以连接。
如果报头未出现在消息中,此方法必须返回一个空字符串。
参数
-
string
$name 不区分大小写的报头字段名称。
返回
字符串
getHeaders() ¶ public
getHeaders(): array
检索所有消息头。
键表示报头名称,它将通过网络发送,并且每个值都是与报头关联的字符串数组。
// 以字符串形式表示报头 foreach ($message->getHeaders() as $name => $values) { echo $name . ": " . implode(", ", $values); }
// 迭代地发出报头: foreach ($message->getHeaders() as $name => $values) { foreach ($values as $value) { header(sprintf('%s: %s', $name, $value), false); } }
返回
数组
getProtocolVersion() ¶ public
getProtocolVersion(): string
以字符串形式检索 HTTP 协议版本。
字符串必须仅包含 HTTP 版本号(例如,“1.1”、“1.0”)。
返回
字符串
getReasonPhrase() ¶ public
getReasonPhrase(): string
获取与状态码关联的响应原因短语。
由于理由短语不是响应状态行中的必填元素,因此理由短语值可以为空。实现可以选择返回响应状态码的默认 RFC 7231 推荐理由短语(或 IANA HTTP 状态码注册表中列出的那些理由短语)。
返回
字符串
hasHeader() ¶ public
hasHeader(string $header): bool
检查通过给定的不区分大小写的名称是否存在报头。
参数
-
string
$header 不区分大小写的报头名称。
返回
bool
withAddedHeader() ¶ public
withAddedHeader(string $name, string|string[] $value): static
返回一个带有指定报头附加给定值的实例。
将保留指定报头的现有值。新值将附加到现有列表中。如果报头以前不存在,则将添加它。
此方法必须以保留消息不变性的方式实现,并且必须返回一个具有新报头和/或值的实例。
参数
-
string
$name 要添加的不区分大小写的报头字段名称。
-
string|string[]
$value 报头值。
返回
static
抛出
Exception\InvalidArgumentException
对于无效的报头名称或值。
withBody() ¶ public
withBody(StreamInterface $body): static
返回一个带有指定消息主体的实例。
主体必须是 StreamInterface 对象。
此方法必须以保留消息不变性的方式实现,并且必须返回一个具有新主体流的新实例。
参数
-
StreamInterface
$body 主体。
返回
static
抛出
Exception\InvalidArgumentException
当主体无效时。
withHeader() ¶ public
withHeader(string $name, string|string[] $value): static
返回一个带有提供的报头的实例,替换任何现有值,这些值与任何具有相同不区分大小写名称的报头相同。
虽然头名称不区分大小写,但此函数将保留头的名称大小写,并在 getHeaders() 中返回。
此方法 MUST 以保留消息的不可变性来实现,并且 MUST 返回具有新的和/或更新的头和值的实例。
参数
-
string
$name 不区分大小写的报头字段名称。
-
string|string[]
$value 报头值。
返回
static
抛出
Exception\InvalidArgumentException
对于无效的报头名称或值。
withProtocolVersion() ¶ public
withProtocolVersion(string $version): static
返回一个带有指定 HTTP 协议版本的实例。
版本字符串 MUST 仅包含 HTTP 版本号(例如,“1.1”,“1.0”)。
此方法 MUST 以保留消息的不可变性来实现,并且 MUST 返回具有新协议版本的实例。
参数
-
string
$version HTTP 协议版本
返回
static
withStatus() ¶ public
withStatus(int $code, string $reasonPhrase = ''): static
返回一个带有指定状态码的实例,以及可选的理由短语。
如果未指定原因短语,实现 MAY 选择默认使用 RFC 7231 或 IANA 为响应的状态代码推荐的原因短语。
此方法 MUST 以保留消息的不可变性来实现,并且 MUST 返回具有更新状态和原因短语的实例。
参数
-
int
$code 要设置的状态代码。
-
string
$reasonPhrase 可选 状态原因短语。
返回
static
withoutHeader() ¶ public
withoutHeader(string $name): static
返回一个没有指定报头的实例。
头解析 MUST 不区分大小写地完成。
此方法 MUST 以保留消息的不可变性来实现,并且 MUST 返回删除命名头的实例。
参数
-
string
$name 要删除的不区分大小写的头字段名称。
返回
static