类请求
实现 HTTP 请求的方法。
由 Cake\Http\Client 使用,用于保存用于进行请求的请求信息。
常量
-
字符串
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 数组。
-
$headerNames protected
数组
规范化标题名称到用于注册标题的原始名称的映射。
-
$headers protected
数组
所有注册标题的列表,作为键 => 值数组。
方法摘要
-
__construct() public
构造函数
-
addHeaders() protected
将标题数组添加到请求中。
-
cookies() public
获取所有 Cookie
-
getBody() public
获取消息主体。
-
getHeader() public
按给定的不区分大小写的名称检索消息标题值。
-
getHeaderLine() public
检索单个标题的值的逗号分隔字符串。
-
getHeaders() public
检索所有消息标题。
-
getMethod() public
检索请求的 HTTP 方法。
-
getProtocolVersion() public
以字符串形式检索 HTTP 协议版本。
-
getRequestTarget() public
检索消息的请求目标。
-
getUri() public
检索 URI 实例。
-
hasHeader() public
检查标题是否存在,方法是根据给定的不区分大小写的名称。
-
setContent() protected
设置消息的主体/有效负载。
-
withAddedHeader() public
返回一个实例,其中指定的标题附加了给定的值。
-
withBody() public
返回一个实例,其中包含指定的 message body。
-
withHeader() public
返回一个实例,其中包含提供的标题,替换任何具有相同不区分大小写名称的现有标题的值。
-
withMethod() public
返回一个实例,其中包含提供的 HTTP 方法。
-
withProtocolVersion() public
返回一个实例,其中包含指定的 HTTP 协议版本。
-
withRequestTarget() public
使用特定的请求目标创建一个新实例。
-
withUri() public
返回一个包含提供的 URI 的实例。
-
withoutHeader() public
返回一个不包含指定标题的实例。
方法详细说明
__construct() ¶ public
__construct(Psr\Http\Message\UriInterface|string $url = '', string $method = self::METHOD_GET, array $headers = [], array|string|null $data = null)
构造函数
为一些属性提供向后兼容的默认值。
参数
-
Psr\Http\Message\UriInterface|string
$url optional 请求 URL
-
string
$method optional 要使用的 HTTP 方法。
-
array
$headers optional 要设置的 HTTP 标题。
-
array|string|null
$data optional 要使用的请求主体。
addHeaders() ¶ protected
addHeaders(array<string, string> $headers): void
将标题数组添加到请求中。
参数
-
array<string, string>
$headers 要添加的标题。
返回
void
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”)。
返回
字符串
getRequestTarget() ¶ public
getRequestTarget(): string
检索消息的请求目标。
检索消息的请求目标,无论是它将出现的方式(对于客户端),还是它在请求时出现的方式(对于服务器),或者是在实例中为其指定的方式(请参阅 withRequestTarget())。
在大多数情况下,这将是组合 URI 的原始形式,除非向具体实现提供了值(请参阅下面的 withRequestTarget())。
如果没有可用的 URI,并且没有专门提供请求目标,则此方法必须返回字符串“/”。
返回
字符串
getUri() ¶ public
getUri(): UriInterface
检索 URI 实例。
此方法必须返回一个 UriInterface 实例。
返回
UriInterface
链接
hasHeader() ¶ public
hasHeader(string $header): bool
检查标题是否存在,方法是根据给定的不区分大小写的名称。
参数
-
string
$header 不区分大小写的标题名称。
返回
bool
setContent() ¶ protected
setContent(array|string $content): $this
设置消息的主体/有效负载。
数组数据将使用 {@link \Cake\Http\FormData} 进行序列化,并且将设置内容类型。
参数
-
array|string
$content 请求的主体。
返回
$this
withAddedHeader() ¶ public
withAddedHeader(string $name, string|string[] $value): static
返回一个实例,其中指定的标题附加了给定的值。
将维护指定标题的现有值。新值将附加到现有列表中。如果标题以前不存在,则会添加它。
此方法必须以保持消息不变性的方式实现,并且必须返回具有新标题和/或值的实例。
参数
-
string
$name 要添加的不区分大小写的标题字段名称。
-
string|string[]
$value 标题值。
返回
static
抛出
Exception\InvalidArgumentException
对于无效的标题名称或值。
withBody() ¶ public
withBody(StreamInterface $body): static
返回一个实例,其中包含指定的 message body。
主体必须是 StreamInterface 对象。
此方法必须以保持消息不变性的方式实现,并且必须返回具有新主体流的新实例。
参数
-
StreamInterface
$body 身体。
返回
static
抛出
Exception\InvalidArgumentException
当主体无效时。
withHeader() ¶ public
withHeader(string $name, string|string[] $value): static
返回一个实例,其中包含提供的标题,替换任何具有相同不区分大小写名称的现有标题的值。
虽然标题名称不区分大小写,但此函数将保留标题的大小写,并从 getHeaders() 返回。
此方法必须以保持消息不变性的方式实现,并且必须返回具有新和/或更新的标题和值的实例。
参数
-
string
$name 不区分大小写的标题字段名称。
-
string|string[]
$value 标题值。
返回
static
抛出
Exception\InvalidArgumentException
对于无效的标题名称或值。
withMethod() ¶ public
withMethod(string $method): static
返回一个实例,其中包含提供的 HTTP 方法。
虽然 HTTP 方法名称通常都是大写字母,但 HTTP 方法名称区分大小写,因此实现不应该修改给定的字符串。
此方法必须以保持消息不变性的方式实现,并且必须返回具有更改的请求方法的实例。
参数
-
string
$method 不区分大小写的 method。
返回
static
抛出
Exception\InvalidArgumentException
对于无效的 HTTP 方法。
withProtocolVersion() ¶ public
withProtocolVersion(string $version): static
返回一个实例,其中包含指定的 HTTP 协议版本。
版本字符串必须仅包含 HTTP 版本号(例如,“1.1”、“1.0”)。
此方法必须以保持消息不变性的方式实现,并且必须返回具有新协议版本的实例。
参数
-
string
$version HTTP 协议版本
返回
static
withRequestTarget() ¶ public
withRequestTarget(string $requestTarget): static
使用特定的请求目标创建一个新实例。
如果请求需要非原始形式的请求目标——例如,为了指定绝对形式、授权形式或星号形式——则可以使用此方法创建具有指定请求目标的实例,逐字记录。
此方法必须以保持消息不变性的方式实现,并且必须返回具有更改的请求目标的新实例。
参数
-
string
$requestTarget
返回
static
抛出
Exception\InvalidArgumentException
如果请求目标无效。
链接
withUri() ¶ public
withUri(UriInterface $uri, bool $preserveHost = false): static
返回一个包含提供的 URI 的实例。
此方法将默认情况下更新返回请求的 Host 标题,如果 URI 包含主机组件。如果 URI 不包含主机组件,则任何预先存在的 Host 标题将被传递到返回的请求中。
您可以通过将 $preserveHost
设置为 true
来选择保留 Host 标题的原始状态。当 $preserveHost
设置为 true
时,返回的请求不会更新返回消息的 Host 标题——即使消息不包含 Host 标题。这意味着对原始请求调用 getHeader('Host')
必须等于对返回请求调用 getHeader('Host')
的返回值。
此方法必须以保持消息不变性的方式实现,并且必须返回具有新 UriInterface 实例的实例。
参数
-
UriInterface
$uri 要使用的新的请求 URI。
-
bool
$preserveHost optional 保留 Host 标题的原始状态。
返回
static
链接
withoutHeader() ¶ public
withoutHeader(string $name): static
返回一个不包含指定标题的实例。
标题解析必须在不区分大小写的情况下完成。
此方法必须以保持消息不变性的方式实现,并且必须返回删除了命名标题的实例。
参数
-
string
$name 要删除的不区分大小写的标题字段名称。
返回
static