Opciones de solicitud

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']);

allow_redirects

Resumen

Describe el comportamiento de redirección de una solicitud

Tipos
  • bool
  • array
Por defecto
[
    'max' => 5,
    'strict' => false,
    'referer' => false,
    'protocols' => ['http', 'https'],
    track_redirects' => false
]
Constante

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.

auth

Resumen

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.

Tipos
  • array
  • cadena
  • null
Por defecto

Ninguno

Constante

GuzzleHttp\RequestOptions::AUTH

Los tipos de autenticación incorporados son los siguientes:

básico
Utilice autenticación básica HTTP en la cabecera Authorization (la configuración por defecto utilizada si no se especifica ninguna especificado).
$client->request('GET', '/get', ['auth' => ['username', 'password']]);
digerir
Utilizar la autenticación digest (debe ser soportado por el manejador HTTP).
$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.

ntlm
Utilice Autenticación Microsoft NTLM (debe ser soportada por el manejador HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'ntlm']
]);

Nota

Actualmente, esto sólo es posible cuando se utiliza el manejador cURL.

body

Resumen

La opción body se utiliza para controlar el cuerpo de una entidad de una entidad (por ejemplo, PUT, POST, PATCH).

Tipos
  • cadena
  • fopen() resource
  • Psr\Http\Message\StreamInterface
Por defecto

Ninguno

Constante

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.

cert

Resumen

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

Tipos
  • cadena
  • array
Por defecto

Ninguno

Constante

GuzzleHttp\RequestOptions::CERT

$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);

cookies

Resumen
Especifica si se utilizan o no las cookies en una solicitud o qué utilizar o qué cookies enviar.
Tipos
GuzzleHttp\Cookie\CookieJarInterface
Por defecto
Ninguno
Constante
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.

connect_timeout

Resumen
Flotante que describe el número de segundos que hay que esperar mientras se intenta conectar a un servidor. Utilice 0 para esperar indefinidamente (el comportamiento por defecto).
Tipos
float
Por defecto
0
Constante
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.

debug

Resumen

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

Tipos
  • bool
  • fopen() resource
Por defecto

Ninguno

Constante

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

decode_content

Resumen

Especifica si las respuestas Content-Encoding (gzip, deflate, etc.) se decodifican automáticamente.

Tipos
  • cadena
  • bool
Por defecto

true

Constante

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']);

delay

Resumen

El número de milisegundos a retrasar antes de enviar la solicitud.

Tipos
  • entero
  • float
Por defecto

null

Constante

GuzzleHttp\RequestOptions::DELAY

expect

Resumen

Controla el comportamiento de la cabecera "Expect: 100-Continue"

Tipos
  • bool
  • entero
Por defecto

1048576

Constante

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.

force_ip_resolve

Resumen
Establezca "v4" si desea que los manejadores HTTP utilicen sólo el protocolo ipv4 o "v6" para el protocolo ipv6.
Tipos
cadena
Por defecto
null
Constante
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.

form_params

Resumen
Se utiliza para enviar una solicitud POST application/x-www-form-urlencoded.
Tipos
matriz
Constante
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.

headers

Resumen
Matriz asociativa de cabeceras para añadir a la solicitud. Cada clave es el nombre de una cabecera, y cada valor es una cadena o matriz de cadenas que representan los valores del campo de la cabecera.
Tipos
matriz
Valores por defecto
Ninguno
Constante
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']]);

http_errors

Resumen
Establecer a 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.
Tipos
bool
Por defecto
true
Constante
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.

idn_conversion

Resumen

Soporte de nombres de dominio internacionalizados (IDN) (habilitado por defecto si intl extensión está disponible).

Tipos
  • bool
  • int
Por defecto

true si la extensión intl está disponible (y la biblioteca ICU es 4.6+ para PHP 7.2+), false en caso contrario

Constante

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

Resumen
La opción 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.
Tipos
Cualquier tipo de PHP que pueda ser operado por la función json_encode() de PHP.
Por defecto
Ninguno
Constante
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.

multipart

Resumen
Establece el cuerpo de la solicitud en un formulario multipart/form-data.
Tipos
matriz
Constante
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 formulario
  • contenido: (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.

on_headers

Resumen

Un callable que se invoca cuando las cabeceras HTTP de la respuesta han recibido pero el cuerpo aún no ha comenzado a descargarse.

Tipos
  • llamable
Constante

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

Resumen

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.

Tipos
  • llamable
Constante

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());
        }
    }
]);

progress

Resumen

Define una función para invocar cuando se produce el progreso de la transferencia.

Tipos
  • llamable
Por defecto

Ninguno

Constante

GuzzleHttp\RequestOptions::PROGRESS

La función acepta los siguientes argumentos de posición:

  • el número total de bytes que se espera descargar, cero si se desconoce
  • el número de bytes descargados hasta el momento
  • el número total de bytes que se espera cargar
  • el número de bytes cargados hasta el momento
// Send a GET request to /get?foo=bar
$result = $client->request(
    'GET',
    '/',
    [
        'progress' => function(
            $downloadTotal,
            $downloadedBytes,
            $uploadTotal,
            $uploadedBytes
        ) {
            //do something
        },
    ]
);

proxy

Resumen

Pasa una cadena para especificar un proxy HTTP, o un array para especificar diferentes proxies para diferentes protocolos.

Tipos
  • cadena
  • array
Por defecto

Ninguno

Constante

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".

query

Resumen

Arreglo asociativo de valores de cadena de consulta o cadena de consulta para añadir a la solicitud.

Tipos
  • array
  • cadena
Por defecto

Ninguno

Constante

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']]);

read_timeout

Resumen
Float que describe el tiempo de espera que se utilizará cuando se lea un cuerpo en flujo
Tipos
float
Por defecto
Por defecto el valor de la configuración default_socket_timeout PHP ini
Constante
GuzzleHttp\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());

sink

Resumen

Especifica dónde se guardará el cuerpo de una respuesta.

Tipos
  • cadena (ruta de acceso al archivo en el disco)
  • fopen() resource
  • Psr\Http\Message\StreamInterface
Por defecto

Flujo temporal PHP

Constante

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.

ssl_key

Resumen

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.

Tipos
  • cadena
  • array
Por defecto

Ninguno

Constante

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.

stream

Resumen
Establecer en true para transmitir una respuesta en lugar de descargarla toda por adelantado.
Tipos
bool
Por defecto
false
Constante
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.

sincrónico

Resumen
Establecer a true para informar a los manejadores HTTP que usted tiene la intención de esperar en la respuesta. Esto puede ser útil para las optimizaciones.
Tipos
bool
Por defecto
ninguno
Constante
GuzzleHttp\RequestOptions::SYNCHRONOUS

verify

Resumen

Describe el comportamiento de verificación del certificado SSL de una solicitud.

  • Establece true para habilitar la verificación de certificados SSL y utilizar el paquete de CA por defecto proporcionado por el sistema operativo.
  • Establecer a false para deshabilitar la verificación de certificados (¡esto es inseguro!).
  • Establece una cadena para proporcionar la ruta de acceso a un paquete de CA para permitir la verificación utilizando un certificado personalizado.
Tipos
  • bool
  • cadena
Por defecto

true

Constante

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.

timeout

Resumen
Float que describe el tiempo total de espera de la solicitud en segundos. Utilice 0 para esperar indefinidamente (el comportamiento por defecto).
Tipos
float
Por defecto
0
Constante
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'

versión

Resumen
Versión del protocolo a utilizar con la solicitud.
Tipos
cadena, flotador
Por defecto
1.1
Constante
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);