$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302
设置为true
(默认设置)以启用正常的重定向,最大重定向数为5。
$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200
你也可以传递一个包含以下键值对的关联数组。
max: (int, default=5) 允许重定向的最大数量。
严格。(bool, default=false) 设置为 "true "以使用严格的重定向。
严格的RFC兼容的重定向意味着POST重定向请求被作为
POST请求,而不是像大多数浏览器那样将POST请求与GET请求重定向。
referer: (bool, default=false) 设置为 "true",以便在重定向时能够添加Refer
protocols: (array, default=['http', 'https']) 指定哪些协议是
指定哪些协议被允许用于重定向请求。
on_redirect: (callable)当遇到重定向时调用的PHP可调用程序。
时被调用。该可调用程序被调用时,会包含原始请求和收到的
收到的重定向响应。任何来自on_redirect的返回值
函数的任何返回值都被忽略。
track_redirects: (bool)当设置为true
时,每个重定向的URI和遇到的状态
代码将被追踪到X-Guzzle-Redirect-History
和
X-Guzzle-Redirect-Status-History
头信息中分别跟踪。所有的URI和
所有的URI和状态代码都将按照遇到重定向的顺序被存储。
注意:当追踪重定向时,X-Guzzle-Redirect-History
头信息将
不包括初始请求的URI和X-Guzzle-Redirect-Status-History
。
头部将排除最终的状态代码。
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;
$onRedirect = function(
RequestInterface $request,
ResponseInterface $response,
UriInterface $uri
echo 'Redirecting! ' . $request->getUri() . ' to ' . $uri . "\n";
$res = $client->request('GET', '/redirect/3', [
'allow_redirects' => [
'max' => 10, // allow at most 10 redirects.
'strict' => true, // use "strict" RFC compliant redirects.
'referer' => true, // add a Referer header
'protocols' => ['https'], // only allow https URLs
'on_redirect' => $onRedirect,
'track_redirects' => true
echo $res->getStatusCode();
// 200
echo $res->getHeaderLine('X-Guzzle-Redirect-History');
// http://first-redirect, http://second-redirect, etc...
echo $res->getHeaderLine('X-Guzzle-Redirect-Status-History');
// 301, 302, etc...
这个选项只有在你的处理程序有以下内容时才有效果
GuzzleHttp\Middleware::redirect
中间件时,这个选项才会生效。这个中间件被添加到
当创建一个没有处理程序的客户端时,这个中间件被默认添加。
当用GuzzleHttp\HandlerStack::create
创建一个处理程序时,默认会添加这个中间件。
当使用GuzzleHttp/Client::sendRequest()
进行请求时,这个选项没有效果。为了与PSR-18保持一致,任何重定向响应都会按原样返回。
摘要传入一个HTTP认证参数的数组,以便在请求中使用。
请求一起使用。该数组必须包含索引为[0]的用户名,索引为
索引[1],你还可以选择提供一个内置的认证类型在
index [2]. 通过null
来禁用一个请求的认证
。
默认情况下无
恒定GuzzleHttpRequestOptions::AUTH
内置的认证类型如下。
使用基本HTTP认证
在Authorization
头中(如果没有指定,则使用默认设置)。
指定时使用的默认设置)。
$client->request('GET', '/get', ['auth' => ['username', 'password']]);
使用摘要认证
(必须由HTTP处理程序支持)。
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'digest']
目前,只有在使用cURL处理程序时才支持这个功能。
计划创建一个可以用于任何HTTP处理程序的替代方案。
使用微软NTLM认证
(必须由HTTP处理程序支持)。
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'ntlm']
目前只在使用cURL处理程序时支持这个功能。
摘要body
选项是用来控制实体请求的主体的
包围的请求(例如,PUT、POST、PATCH)。
fopen()
资源
Psr\Http\MessageStreamInterface
默认情况下无
恒定GuzzleHttpRequestOptions::BODY
该设置可被设置为以下任何一种类型。
string
//你可以发送使用字符串作为信息主体的请求。
$client->request('PUT', '/put', ['body' => 'foo'])。
从fopen()
返回的资源。
//你可以发送使用流资源作为主体的请求。
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r')。
$client->request('PUT', '/put', ['body' => $resource])。
Psr\HttpMessage\StreamInterface
//你可以发送使用Guzzle流对象作为主体的请求。
$stream = GuzzleHttp\Psr7\Utils::streamFor('contents...')。
$client->request('POST', '/post', ['body' => $stream])。
恒定GuzzleHttp\RequestOptions::COOKIES
你必须将cookies选项指定为GuzzleHttp\Cookie/CookieJarInterface
或false
。
$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);
这个选项只有在你的处理程序有以下内容时才会产生作用
GuzzleHttp\Middleware::cookies
中间件。这个中间件被添加到
当创建一个没有处理程序的客户端时,这个中间件被默认添加。
当用GuzzleHttp\default_handler
创建一个处理程序时,这个中间件被默认添加。
当创建一个客户端时,你可以将默认的cookie选项设置为true
来使用一个与客户端相关的共享cookie会话。
connect_timeout
idn_to_ascii()
文档中的更多细节。
json
json_encode() 的任何选项。
函数。如果你需要定制这些设置,那么你必须将
JSON编码的数据,并使用body
request选项将其传递到请求中。
选项,并且你必须使用
headers
请求选项来指定正确的内容类型头。
此选项不能与body
、form_params
,或multipart
一起使用。
multipart