Puede personalizar las solicitudes creadas y transferidas por un cliente utilizando opciones de solicitud. Las opciones de solicitud controlan varios aspectos de una solicitud incluyendo las cabeceras, los parámetros de la cadena de consulta, la configuración del tiempo de espera, el cuerpo de una y mucho más.
Todos los ejemplos siguientes utilizan el siguiente cliente:
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
Describe el comportamiento de redirección de una solicitud
[
'max' => 5,
'strict' => false,
'referer' => false,
'protocols' => ['http', 'https'],
track_redirects' => false
]
GuzzleHttp\RequestOptions::ALLOW_REDIRECTS
Establezca false
para desactivar las redirecciones.
$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302
Establezca true
(la configuración por defecto) para habilitar las redirecciones normales con un número máximo de 5 redirecciones.
$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200
También puede pasar una matriz asociativa que contenga los siguientes pares clave-valor:
max: (int, default=5) número máximo de redirecciones permitidas.
strict: (bool, default=false) Establecer a true para usar redirecciones estrictas. Las redirecciones estrictas que cumplen con el RFC significan que las solicitudes de redirección POST se envían como POST en lugar de hacer lo que la mayoría de los navegadores hacen, que es redirigir las peticiones POST con peticiones GET.
referer: (bool, default=false) Establecer a true para permitir la adición de la cabecera Referer cuando se redirige.
protocolos: (array, default=['http', 'https']) Especifica qué protocolos están permitidos para las solicitudes de redirección.
on_redirect: (callable) Llamada de PHP que se invoca cuando se encuentra una redirección se encuentra. El callable es invocado con la petición original y la respuesta de redirección que se recibió. Cualquier valor de retorno de la función on_redirect es ignorado
track_redirects: (bool) Cuando se establece en true
, cada URI redirigido y código de estado
encontrados serán rastreados en el X-Guzzle-Redirect-History
y
X-Guzzle-Redirect-Status-History
respectivamente. Todos los URIs y
códigos de estado se almacenarán en el orden en que se encontraron las redirecciones.
Nota: Cuando se hace un seguimiento de las redirecciones, la cabecera X-Guzzle-Redirect-History
excluirá el URI de la solicitud inicial y el encabezado X-Guzzle-Redirect-Status-History
excluirá el código de estado final.
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...
Advertencia
Esta opción sólo tiene efecto si su manejador tiene el
GuzzleHttp\Middleware::redirect
middleware. Este middleware se añade
por defecto cuando se crea un cliente sin manejador, y se añade por
por defecto cuando se crea un manejador con GuzzleHttp\HandlerStack::create
.
Nota
Esta opción no tiene ningún efecto cuando se hacen peticiones usando GuzzleHttp\Client::sendRequest()
. Para cumplir con el PSR-18 cualquier respuesta de redirección se devuelve tal cual.
Pasar una matriz de parámetros de autenticación HTTP para usar con la
solicitud. El array debe contener el nombre de usuario en el índice [0], la contraseña en
index [1], y opcionalmente puede proporcionar un tipo de autenticación incorporado en
index [2]. Pase null
para desactivar la autenticación para una solicitud.
Ninguno
GuzzleHttp\RequestOptions::AUTH
Los tipos de autenticación incorporados son los siguientes:
Authorization
(la configuración por defecto utilizada si no se especifica ninguna
especificado).$client->request('GET', '/get', ['auth' => ['username', 'password']]);
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'digest']
]);
Nota
En la actualidad, esto sólo se admite cuando se utiliza el manejador cURL, pero pero está previsto crear un sustituto que pueda utilizarse con cualquier planeado.
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'ntlm']
]);
Nota
Actualmente, esto sólo es posible cuando se utiliza el manejador cURL.
La opción body
se utiliza para controlar el cuerpo de una entidad
de una entidad (por ejemplo, PUT, POST, PATCH).
fopen()
resourcePsr\Http\Message\StreamInterface
Ninguno
GuzzleHttp\RequestOptions::BODY
Este ajuste puede establecerse en cualquiera de los siguientes tipos:
cadena
// Puedes enviar peticiones que utilicen una cadena como cuerpo del mensaje.
$client->request('PUT', '/put', ['body' => 'foo']);
recurso devuelto por fopen()
// Puedes enviar peticiones que utilicen un recurso de flujo como cuerpo.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
$client->request('PUT', '/put', ['body' => $resource]);
Psr\Http\Message\StreamInterface
// Puedes enviar peticiones que utilicen un objeto Guzzle stream como cuerpo
$stream = GuzzleHttp\Psr7\Utils::streamFor('contenidos...');
$client->request('POST', '/post', ['body' => $stream]);
Nota
Esta opción no puede utilizarse con form_params
, multipart
, o json
.
Establece una cadena para especificar la ruta de un archivo que contiene un certificado del lado del cliente con formato PEM formateado en el lado del cliente. Si se requiere una contraseña, entonces establece a una matriz que contenga la ruta del archivo PEM en el primer elemento de la matriz seguido de la contraseña requerida para el certificado en el segundo elemento de la matriz
Ninguno
GuzzleHttp\RequestOptions::CERT
$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);
GuzzleHttp\Cookie\CookieJarInterface
GuzzleHttp\RequestOptions::COOKIES
Debes especificar la opción de cookies como GuzzleHttp\Cookie\CookieJarInterface
o false
.
$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);
Advertencia
Esta opción sólo tiene efecto si tu manejador tiene el
GuzzleHttp\Middleware::cookies
middleware. Este middleware se añade
por defecto cuando se crea un cliente sin manejador, y se añade por
por defecto cuando se crea un manejador con GuzzleHttp\default_handler
.
Consejo
Cuando se crea un cliente, se puede establecer la opción de cookie por defecto a true
para utilizar una sesión de cookies compartida asociada al cliente.
0
para esperar indefinidamente (el comportamiento por defecto).0
GuzzleHttp\RequestOptions::CONNECT_TIMEOUT
// Timeout if the client fails to connect to the server in 3.14 seconds.
$client->request('GET', '/delay/5', ['connect_timeout' => 3.14]);
Nota
Este ajuste debe ser soportado por el manejador HTTP utilizado para enviar una solicitud.
connect_timeout
actualmente sólo es soportado por el manejador cURL
incorporado.
Establecer a true
o establecer a un flujo PHP devuelto por fopen()
para
habilitar la salida de depuración con el manejador utilizado para enviar una solicitud. Por ejemplo
cuando se utiliza cURL para transferir peticiones, el verbo de cURL de CURLOPT_VERBOSE
será emitido. Cuando se utiliza la envoltura de flujo de PHP, la envoltura de flujo
serán emitidas. Si se establece en true, la salida se escribe en
STDOUT de PHP. Si se proporciona un flujo de PHP, la salida se escribe en el flujo
fopen()
resourceNinguno
GuzzleHttp\RequestOptions::DEBUG
$client->request('GET', '/get', ['debug' => true]);
Si se ejecuta el ejemplo anterior, se obtendrá algo como lo siguiente:
* About to connect() to httpbin.org port 80 (#0)
* Trying 107.21.213.98... * Connected to httpbin.org (107.21.213.98) port 80 (#0)
> GET /get HTTP/1.1
Host: httpbin.org
User-Agent: Guzzle/4.0 curl/7.21.4 PHP/5.5.7
< HTTP/1.1 200 OK
< Access-Control-Allow-Origin: *
< Content-Type: application/json
< Date: Sun, 16 Feb 2014 06:50:09 GMT
< Server: gunicorn/0.17.4
< Content-Length: 335
< Connection: keep-alive
<
* Connection #0 to host httpbin.org left intact
Especifica si las respuestas Content-Encoding
(gzip,
deflate, etc.) se decodifican automáticamente.
true
GuzzleHttp\RequestOptions::DECODE_CONTENT
Esta opción se puede utilizar para controlar cómo se manejan los cuerpos de respuesta con contenido codificado
codificados. Por defecto, decode_content
está establecido en true, lo que significa que cualquier respuesta gzipped
o deflactada será decodificada por Guzzle.
Cuando se establece a false
, el cuerpo de una respuesta nunca se decodifica, lo que significa que los bytes pasan por el manejador sin cambios.
// Request gzipped data, but do not decode it while downloading
$client->request('GET', '/foo.js', [
'headers' => ['Accept-Encoding' => 'gzip'],
'decode_content' => false
]);
Cuando se establece a una cadena, los bytes de una respuesta se decodifican y el valor de la cadena
proporcionado a la opción decode_content
se pasa como la cabecera Accept-Encoding
de la solicitud.
// Pass "gzip" as the Accept-Encoding header.
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);
El número de milisegundos a retrasar antes de enviar la solicitud.
null
GuzzleHttp\RequestOptions::DELAY
Controla el comportamiento de la cabecera "Expect: 100-Continue"
1048576
GuzzleHttp\RequestOptions::EXPECT
Establecer a true
para habilitar la cabecera "Expect: 100-Continue" para todas las peticiones
que envíen un cuerpo. Establezca false
para desactivar la cabecera "Expect: 100-Continue"
para todas las solicitudes. Establecer un número para que el tamaño de la carga útil debe
ser mayor que el número para poder enviar la cabecera Expect. Si se establece un número, se enviará la cabecera Expect para todas las peticiones.
enviará la cabecera Expect para todas las peticiones en las que el tamaño de la
de la carga útil no pueda determinarse o cuando el cuerpo no sea rebobinable.
Por defecto, Guzzle añadirá la cabecera "Expect: 100-Continue" cuando el tamaño del cuerpo de una petición sea superior a 1 MB y una petición esté utilizando HTTP/1.1.
Nota
Esta opción sólo tiene efecto cuando se utiliza HTTP/1.1. Los protocolos HTTP/1.0 y HTTP/2.0 no soportan la cabecera "Expect: 100-Continue". El soporte para manejar el flujo de trabajo "Expect: 100-Continue" debe ser implementado por los manejadores HTTP de Guzzle utilizados por un cliente.
GuzzleHttp\RequestOptions::FORCE_IP_RESOLVE
// Force ipv4 protocol
$client->request('GET', '/foo', ['force_ip_resolve' => 'v4']);
// Force ipv6 protocol
$client->request('GET', '/foo', ['force_ip_resolve' => 'v6']);
Nota
Esta configuración debe ser soportada por el manejador HTTP utilizado para enviar una solicitud.
force_ip_resolve
actualmente sólo es soportado por los manejadores cURL
y stream handlers.
GuzzleHttp\RequestOptions::FORM_PARAMS
Matriz asociativa de nombres de campos de formulario a valores donde cada valor es una cadena o matriz de cadenas. Establece la cabecera Content-Type como application/x-www-form-urlencoded cuando no hay una cabecera Content-Type presente.
$client->request('POST', '/post', [
'form_params' => [
'foo' => 'bar',
'baz' => ['hi', 'there!']
]
]);
Nota
form_params
no puede utilizarse con la opción multipart
. Deberá utilizar
una u otra. Utilice form_params
para application/x-www-form-urlencoded
y multipart
para solicitudes multipart/form-data
.
Esta opción no puede utilizarse con body
, multipart
, o json
.
GuzzleHttp\RequestOptions::HEADERS
// Set various headers on a request
$client->request('GET', '/get', [
'headers' => [
'User-Agent' => 'testing/1.0',
'Accept' => 'application/json',
'X-Foo' => ['Bar', 'Baz']
]
]);
Las cabeceras pueden añadirse como opciones por defecto al crear un cliente. Cuando las cabeceras
se utilizan como opciones por defecto, sólo se aplican si la solicitud que se está creando
no contiene ya la cabecera específica. Esto incluye tanto las solicitudes pasadas
al cliente en los métodos send()
y sendAsync()
, y las peticiones
creadas por el cliente (por ejemplo, request()
y requestAsync()
).
$client = new GuzzleHttp\Client(['headers' => ['X-Foo' => 'Bar']]);
// Will send a request with the X-Foo header.
$client->request('GET', '/get');
// Sets the X-Foo header to "test", which prevents the default header
// from being applied.
$client->request('GET', '/get', ['headers' => ['X-Foo' => 'test']]);
// Will disable adding in default headers.
$client->request('GET', '/get', ['headers' => null]);
// Will not overwrite the X-Foo header because it is in the message.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request);
// Will overwrite the X-Foo header with the request option provided in the
// send method.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request, ['headers' => ['X-Foo' => 'overwrite']]);
false
para desactivar el lanzamiento de excepciones en un protocolo HTTP
(es decir, las respuestas 4xx y 5xx). Las excepciones se lanzan por defecto cuando
errores de protocolo HTTP se encuentran.true
GuzzleHttp\RequestOptions::HTTP_ERRORS
$client->request('GET', '/status/500');
// Throws a GuzzleHttp\Exception\ServerException
$res = $client->request('GET', '/status/500', ['http_errors' => false]);
echo $res->getStatusCode();
// 500
Advertencia
Esta opción sólo tiene efecto si tu manejador tiene el middleware
GuzzleHttp\Middleware::httpErrors
middleware. Este middleware se añade
por defecto cuando se crea un cliente sin manejador, y se añade por
por defecto cuando se crea un manejador con GuzzleHttp\default_handler
.
Soporte de nombres de dominio internacionalizados (IDN) (habilitado por defecto si
intl
extensión está disponible).
true
si la extensión intl
está disponible (y la biblioteca ICU es 4.6+ para PHP 7.2+), false
en caso contrario
GuzzleHttp\RequestOptions::IDN_CONVERSION
$client->request('GET', 'https://яндекс.рф');
// яндекс.рф is translated to xn--d1acpjx3f.xn--p1ai before passing it to the handler
$res = $client->request('GET', 'https://яндекс.рф', ['idn_conversion' => false]);
// The domain part (яндекс.рф) stays unmodified
Activa/desactiva el soporte de IDN, también puede utilizarse para un control preciso combinando
constantes IDNA_* (excepto IDNA_ERROR_*), véase el parámetro $options
en
idn_to_ascii()
para más detalles.
json
se utiliza para subir fácilmente datos codificados en JSON como el
cuerpo de una solicitud. Se añadirá una cabecera Content-Type de application/json
se añadirá si no hay ninguna cabecera Content-Type en el mensaje.json_encode()
de PHP.GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);
Aquí hay un ejemplo de uso del tap
middleware para ver qué petición se envía por el cable.
use GuzzleHttp\Middleware;
// Create a middleware that echoes parts of the request.
$tapMiddleware = Middleware::tap(function ($request) {
echo $request->getHeaderLine('Content-Type');
// application/json
echo $request->getBody();
// {"foo":"bar"}
});
// The $handler variable is the handler passed in the
// options to the client constructor.
$response = $client->request('PUT', '/put', [
'json' => ['foo' => 'bar'],
'handler' => $tapMiddleware($handler)
]);
Nota
Esta opción de petición no permite personalizar la cabecera Content-Type
ni ninguna de las opciones de la función json_encode() de PHP
de PHP. Si necesita personalizar estas opciones, entonces debe pasar los
datos codificados en JSON a la solicitud utilizando la opción de solicitud body
y debe especificar la cabecera Content-Type correcta utilizando la opción
headers
opción de solicitud.
Esta opción no puede utilizarse con body
, form_params
, o multipart
.
GuzzleHttp\RequestOptions::MULTIPART
El valor de multipart
es una matriz de matrices asociativas, cada una de las cuales contiene los siguientes pares clave-valor:
nombre
: (cadena, obligatorio) el nombre del campo del formulariocontenido
: (StreamInterface/resource/string, obligatorio) Los datos a utilizar en
el elemento del formulario.encabezados
: (array) Matriz asociativa opcional de cabeceras personalizadas para utilizar con
el elemento del formulario.nombre de archivo
: (cadena) Cadena opcional para enviar como nombre de archivo en el parte.use GuzzleHttp\Psr7;
$client->request('POST', '/post', [
'multipart' => [
[
'name' => 'foo',
'contents' => 'data',
'headers' => ['X-Baz' => 'bar']
],
[
'name' => 'baz',
'contents' => Psr7\Utils::tryFopen('/path/to/file', 'r')
],
[
'name' => 'qux',
'contents' => Psr7\Utils::tryFopen('/path/to/file', 'r'),
'filename' => 'custom_filename.txt'
],
]
]);
Nota
multipart
no puede utilizarse con la opción form_params
. Tendrá que
utilizar una u otra. Utilice form_params
para application/x-www-form-urlencoded
y multipart
para solicitudes multipart/form-data
.
Esta opción no puede utilizarse con body
, form_params
, o json
.
Un callable que se invoca cuando las cabeceras HTTP de la respuesta han recibido pero el cuerpo aún no ha comenzado a descargarse.
GuzzleHttp\RequestOptions::ON_HEADERS
La llamada acepta un objeto Psr\Http\Message\ResponseInterface
. Si una excepción
es lanzada por la llamada, entonces la promesa asociada a la respuesta será
será rechazada con un GuzzleHttp\Exception\RequestException
que envuelve la
excepción lanzada.
Es posible que necesite saber qué cabeceras y códigos de estado se han recibido antes de poder escribir los datos en el sumidero.
// Reject responses that are greater than 1024 bytes.
$client->request('GET', 'http://httpbin.org/stream/1024', [
'on_headers' => function (ResponseInterface $response) {
if ($response->getHeaderLine('Content-Length') > 1024) {
throw new \Exception('The file is too big!');
}
}
]);
Nota
Cuando se escriben manejadores HTTP, la función on_headers
debe ser invocada
antes de escribir los datos en el cuerpo de la respuesta.
on_stats
permite acceder a las estadísticas de transferencia de una
solicitud y acceder a los detalles de transferencia de nivel inferior del manejador
asociado a su cliente. on_stats
es un callable que se invoca
cuando un manejador ha terminado de enviar una solicitud. La llamada de retorno es invocada
con estadísticas de transferencia sobre la solicitud, la respuesta recibida o el
error encontrado. En los datos se incluye la cantidad total de tiempo que se ha tardado
para enviar la solicitud.
GuzzleHttp\RequestOptions::ON_STATS
La llamada acepta un objeto GuzzleHttp\TransferStats
.
use GuzzleHttp\TransferStats;
$client = new GuzzleHttp\Client();
$client->request('GET', 'http://httpbin.org/stream/1024', [
'on_stats' => function (TransferStats $stats) {
echo $stats->getEffectiveUri() . "\n";
echo $stats->getTransferTime() . "\n";
var_dump($stats->getHandlerStats());
// You must check if a response was received before using the
// response object.
if ($stats->hasResponse()) {
echo $stats->getResponse()->getStatusCode();
} else {
// Error data is handler specific. You will need to know what
// type of error data your handler uses before using this
// value.
var_dump($stats->getHandlerErrorData());
}
}
]);
Define una función para invocar cuando se produce el progreso de la transferencia.
Ninguno
GuzzleHttp\RequestOptions::PROGRESS
La función acepta los siguientes argumentos de posición:
// Send a GET request to /get?foo=bar
$result = $client->request(
'GET',
'/',
[
'progress' => function(
$downloadTotal,
$downloadedBytes,
$uploadTotal,
$uploadedBytes
) {
//do something
},
]
);
Pasa una cadena para especificar un proxy HTTP, o un array para especificar diferentes proxies para diferentes protocolos.
Ninguno
GuzzleHttp\RequestOptions::PROXY
Pase una cadena para especificar un proxy para todos los protocolos.
$client->request('GET', '/', ['proxy' => 'http://localhost:8125']);
Pase una matriz asociativa para especificar proxies HTTP para esquemas URI específicos
(es decir, "http", "https"). Proporcionar un no
par clave-valor para proporcionar una lista de
nombres de host que no deben ser proxies.
Nota
Guzzle rellenará automáticamente este valor con la variable de entorno
NO_PROXY
variable de entorno. Sin embargo, al proporcionar una opción de solicitud proxy
es necesario proporcionar el valor no
analizado de
la variable de entorno NO_PROXY
(por ejemplo, explode(',', getenv('NO_PROXY'))
).
$client->request('GET', '/', [
'proxy' => [
'http' => 'http://localhost:8125', // Use this proxy with "http"
'https' => 'http://localhost:9124', // Use this proxy with "https",
'no' => ['.mit.edu', 'foo.com'] // Don't use a proxy with these
]
]);
Nota
Puedes proporcionar URLs de proxy que contengan un esquema, un nombre de usuario y una contraseña.
Por ejemplo, "http://username:[email protected]:10"
.
Arreglo asociativo de valores de cadena de consulta o cadena de consulta para añadir a la solicitud.
Ninguno
GuzzleHttp\RequestOptions::QUERY
// Send a GET request to /get?foo=bar
$client->request('GET', '/get', ['query' => ['foo' => 'bar']]);
Las cadenas de consulta especificadas en la opción query
sobrescribirán todos los valores de cadena de consulta suministrados en el URI de una solicitud.
// Send a GET request to /get?foo=bar
$client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);
default_socket_timeout
PHP iniGuzzleHttp\RequestOptions::READ_TIMEOUT
El tiempo de espera se aplica a las operaciones de lectura individuales en un cuerpo de flujo (cuando la opción flujo
está activada).
$response = $client->request('GET', '/stream', [
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
// Returns false on timeout
$data = $body->read(1024);
// Returns false on timeout
$line = fgets($body->detach());
Especifica dónde se guardará el cuerpo de una respuesta.
fopen()
resourcePsr\Http\Message\StreamInterface
Flujo temporal PHP
GuzzleHttp\RequestOptions::SINK
Pase una cadena para especificar la ruta a un archivo que almacenará el contenido del cuerpo de la respuesta:
$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);
Pasar un recurso devuelto desde fopen()
para escribir la respuesta en un flujo PHP:
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$client->request('GET', '/stream/20', ['sink' => $resource]);
Pase un objeto Psr\Http\Message\StreamInterface
para transmitir el cuerpo de la respuesta a un flujo PSR-7 abierto.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$stream = \GuzzleHttp\Psr7\Utils::streamFor($resource);
$client->request('GET', '/stream/20', ['save_to' => $stream]);
Nota
La opción de solicitud save_to
ha quedado obsoleta en favor de la opción de solicitud
sink
. La opción save_to
es ahora un alias
de sink
.
Especifica la ruta de un archivo que contiene una clave SSL privada en formato PEM en formato PEM. Si se requiere una contraseña, entonces establece un array que contiene la ruta a la clave SSL en el primer elemento del array, seguido de la contraseña requerida para el certificado en el segundo elemento.
Ninguno
GuzzleHttp\RequestOptions::SSL_KEY
Nota
ssl_key
es implementado por los manejadores HTTP. En la actualidad, esto sólo es
soportado por el manejador cURL, pero podría ser soportado por otros manejadores
de terceros.
true
para transmitir una respuesta en lugar de descargarla toda
por adelantado.false
GuzzleHttp\RequestOptions::STREAM
$response = $client->request('GET', '/stream/20', ['stream' => true]);
// Read bytes off of the stream until the end of the stream is reached
$body = $response->getBody();
while (!$body->eof()) {
echo $body->read(1024);
}
Nota
El soporte de la respuesta de streaming debe ser implementado por el manejador HTTP utilizado por un cliente. Esta opción puede no ser soportada por todos los manejadores HTTP, pero la interfaz interfaz del objeto de respuesta sigue siendo la misma, independientemente de si el independientemente de si el gestor lo soporta o no.
GuzzleHttp\RequestOptions::SYNCHRONOUS
Describe el comportamiento de verificación del certificado SSL de una solicitud.
true
para habilitar la verificación de certificados SSL y utilizar el paquete de
CA por defecto proporcionado por el sistema operativo.false
para deshabilitar la verificación de certificados (¡esto es inseguro!).true
GuzzleHttp\RequestOptions::VERIFY
// Use the system's CA bundle (this is the default setting)
$client->request('GET', '/', ['verify' => true]);
// Use a custom SSL certificate on disk.
$client->request('GET', '/', ['verify' => '/path/to/cert.pem']);
// Disable validation entirely (don't do this!).
$client->request('GET', '/', ['verify' => false]);
Si no necesita un paquete de certificados específico, Mozilla proporciona un paquete de CA de uso común que se puede descargar aquí (proporcionado por el mantenedor de cURL). Una vez que tenga un paquete de CA disponible en en el disco, puede establecer la configuración de PHP ini "openssl.cafile" para que apunte a la ruta del archivo el archivo, permitiéndole omitir la opción de solicitud "verify". Puede encontrar más detalles sobre Los certificados SSL se pueden encontrar en el sitio web cURL website.
0
para esperar indefinidamente (el comportamiento por defecto).0
GuzzleHttp\RequestOptions::TIMEOUT
// Timeout if a server does not return a response in 3.14 seconds.
$client->request('GET', '/delay/5', ['timeout' => 3.14]);
// PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\TransferException'
1.1
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);