Opzioni di richiesta

È possibile personalizzare le richieste create e trasferite da un client utilizzando . Le opzioni di richiesta controllano vari aspetti di una richiesta comprese le intestazioni, i parametri delle stringhe di query, le impostazioni di timeout, il corpo di una richiesta e molto altro.

Tutti i seguenti esempi utilizzano il seguente client:

$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);

allow_redirects

Riassunto

Descrive il comportamento di reindirizzamento di una richiesta

Tipi
  • bool
  • array
Default
[
    'max' => 5,
    'strict' => false,
    'referer' => false,
    'protocols' => ['http', 'https'],
    'track_redirects' => false
]
Costante

GuzzleHttp\RequestOptions::ALLOW_REDIRECTS

Impostare su false per disabilitare i redirect.

$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302

Impostato su true (l'impostazione predefinita) per abilitare i redirect normali con un numero massimo di 5 redirect.

$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200

Potete anche passare un array associativo contenente le seguenti coppie chiave-valore:

  • max: (int, default=5) numero massimo di redirect consentiti

  • strict: (bool, default=false) Impostato a true per usare redirect rigorosi. I rinvii rigorosi conformi a RFC significano che le richieste di rinvio POST sono inviate come richieste POST invece di fare ciò che fa la maggior parte dei browser, cioè reindirizzare le richieste POST con richieste GET.

  • referer: (bool, default=false) Impostato a true per abilitare l'aggiunta dell'intestazione Referer quando si reindirizza.

  • protocolli: (array, default=['http', 'https']) Specifica quali protocolli sono consentiti per le richieste di reindirizzamento

  • on_redirect: (callable) Callable PHP che viene invocata quando un redirect viene incontrato. La callable è invocata con la richiesta originale e la risposta di reindirizzamento che è stata ricevuta. Qualsiasi valore di ritorno dalla funzione on_redirect viene ignorato.

  • track_redirects: (bool) Quando impostato a true, ogni URI reindirizzato e codice di stato incontrato sarà tracciato nella X-Guzzle-Redirect-History e X-Guzzle-Redirect-Status-History rispettivamente negli header. Tutti gli URI e i saranno memorizzati nell'ordine in cui i redirect sono stati incontrati.

    Nota: Quando si tracciano i redirect l'intestazione X-Guzzle-Redirect-History esclude l'URI della richiesta iniziale e l'header X-Guzzle-Redirect-Status-History escluderà il codice di stato finale.

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

Attenzione

Questa opzione ha effetto solo se il vostro gestore ha il GuzzleHttp\Middleware::redirect middleware. Questo middleware viene aggiunto di default quando un client viene creato senza handler, e viene aggiunto di di default quando si crea un gestore con GuzzleHttp\HandlerStack::create.

Nota

Questa opzione non ha nessun effetto quando si fanno richieste usando GuzzleHttp\Client::sendRequest(). Al fine di rimanere conformi al PSR-18, qualsiasi risposta di redirect viene restituita così com'è.

auth

Riassunto

Passa un array di parametri di autenticazione HTTP da usare con la richiesta. L'array deve contenere il nome utente nell'indice [0], la password in indice [1], e si può opzionalmente fornire un tipo di autenticazione integrato in index [2]. Passare null per disabilitare l'autenticazione per una richiesta.

Tipi
  • array
  • stringa
  • null
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::AUTH

I tipi di autenticazione incorporati sono i seguenti:

base
Usare autenticazione HTTP di base nell'intestazione Authorization (l'impostazione predefinita usata se non viene specificato).
$client->request('GET', '/get', ['auth' => ['username', 'password']]);
digest
Usare digest authentication (deve essere supportata dal gestore HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'digest']
]);

Nota

Questo è attualmente supportato solo quando si usa il gestore cURL, ma la creazione di un sostituto che può essere usato con qualsiasi gestore HTTP è prevista.

ntlm
Usare Microsoft NTLM authentication (deve essere supportata dal gestore HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'ntlm']
]);

Nota

Questo è attualmente supportato solo quando si usa il gestore cURL.

body

Riassunto

L'opzione body è usata per controllare il corpo di una richiesta allegata (ad esempio, PUT, POST, PATCH).

Tipi
  • stringa
  • fopen() risorsa
  • Psr\Http\Message\StreamInterface
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::BODY

Questa impostazione può essere impostata su uno dei seguenti tipi:

  • string

    // Puoi inviare richieste che usano una stringa come corpo del messaggio.
    $client->request('PUT', '/put', ['body' => 'foo']);
    
  • risorsa restituita da fopen()

    // È possibile inviare richieste che utilizzano una risorsa stream come corpo.
    $resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
    $client->request('PUT', '/put', ['body' => $resource]);
    
  • Psr\Http\Message\StreamInterface

    // Potete inviare richieste che usano un oggetto stream Guzzle come corpo
    $stream = GuzzleHttp\Psr7\Utils::streamFor('contents...');
    $client->request('POST', '/post', ['body' => $stream]);
    

Nota

Questa opzione non può essere usata con form_params, multipart, o json

cert

Riassunto

Impostare su una stringa per specificare il percorso di un file contenente un certificato formattato in PEM formattato lato client. Se è richiesta una password, impostare a un array contenente il percorso del file PEM nel primo elemento dell'array seguito dalla password richiesta per il certificato nel secondo elemento dell'array elemento.

Tipi
  • stringa
  • array
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::CERT

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

cookies

Riassunto
Specifica se i cookie sono usati o meno in una richiesta o quale utilizzare o quali cookie inviare.
Tipi
GuzzleHttp\Cookie\CookieJarInterface
Default
Nessuno
Costante
GuzzleHttp\RequestOptions::COOKIES

Dovete specificare l'opzione cookies come GuzzleHttp\Cookie\CookieJarInterface o false.

$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);

Attenzione

Questa opzione ha effetto solo se il vostro gestore ha il GuzzleHttp\Middleware::cookies middleware. Questo middleware viene aggiunto di default quando un client viene creato senza handler, e viene aggiunto di di default quando si crea un gestore con GuzzleHttp\default_handler.

Suggerimento

Quando si crea un client, si può impostare l'opzione cookie predefinita su true per utilizzare una sessione di cookie condivisa associata al client.

connect_timeout

Riassunto
Float che descrive il numero di secondi da aspettare mentre si cerca di connettersi a un server. Usare 0 per aspettare indefinitamente (il comportamento predefinito).
Tipi
float
Default
0
Costante
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

Questa impostazione deve essere supportata dal gestore HTTP utilizzato per inviare una richiesta. connect_timeout è attualmente supportato solo dal gestore cURL incorporato.

debug

Riassunto

Impostato su true o impostato su un flusso PHP restituito da fopen() per abilitare l'output di debug con il gestore utilizzato per inviare una richiesta. Per esempio, quando si usa cURL per trasferire le richieste, il verbose di cURL di CURLOPT_VERBOSE sarà emesso. Quando si usa lo stream wrapper PHP, le notifiche dello stream wrapper saranno emessi. Se impostato a true, l'output viene scritto su STDOUT di PHP. Se viene fornito uno stream PHP, l'output viene scritto nello stream.

Tipi
  • bool
  • fopen() risorsa
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::DEBUG

$client->request('GET', '/get', ['debug' => true]);

L'esecuzione dell'esempio precedente produrrebbe qualcosa come il seguente:

* 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

Riassunto

Specifica se Content-Encoding le risposte (gzip, deflate, ecc.) sono decodificate automaticamente.

Tipi
  • stringa
  • bool
Default

true

Costante

GuzzleHttp\RequestOptions::DECODE_CONTENT

Questa opzione può essere usata per controllare come i corpi di risposta codificati per il contenuto sono gestiti. Di default, decode_content è impostata a true, il che significa che qualsiasi risposta gzippata o deflazionata sarà decodificata da Guzzle.

Quando è impostato su false, il corpo di una risposta non viene mai decodificato, il che significa che i byte passano attraverso il gestore senza modifiche.

// Request gzipped data, but do not decode it while downloading
$client->request('GET', '/foo.js', [
    'headers'        => ['Accept-Encoding' => 'gzip'],
    'decode_content' => false
]);

Quando è impostato a una stringa, i byte di una risposta sono decodificati e il valore della stringa fornito all'opzione decode_content viene passato come Accept-Encoding dell'intestazione della richiesta.

// Pass "gzip" as the Accept-Encoding header.
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);

delay

Riassunto

Il numero di millisecondi di ritardo prima di inviare la richiesta.

Tipi
  • intero
  • float
Default

null

Costante

GuzzleHttp\RequestOptions::DELAY

expect

Riassunto

Controlla il comportamento dell'intestazione "Expect: 100-Continue".

Tipi
  • bool
  • intero
Default

1048576

Costante

GuzzleHttp\RequestOptions::EXPECT

Impostato a true per abilitare l'intestazione "Expect: 100-Continue" per tutte le richieste che invia un corpo. Impostato a false per disabilitare l'intestazione "Expect: 100-Continue" per tutte le richieste. Impostare su un numero in modo che la dimensione del carico utile debba essere maggiore del numero per inviare l'intestazione Expect. Impostando un numero invierà l'intestazione Expect per tutte le richieste in cui la dimensione del payload non può essere determinata o dove il corpo non è riavvolgibile.

Per impostazione predefinita, Guzzle aggiunge l'intestazione "Expect: 100-Continue" quando la dimensione del corpo di una richiesta è maggiore di 1 MB e una richiesta sta usando HTTP/1.1.

Nota

Questa opzione ha effetto solo quando si usa HTTP/1.1. I protocolli HTTP/1.0 e HTTP/2.0 non supportano l'intestazione "Expect: 100-Continue". Il supporto per la gestione del flusso di lavoro "Expect: 100-Continue" deve essere implementato dai gestori HTTP di Guzzle usati da un client.

force_ip_resolve

Riassunto
Impostare su "v4" se si desidera che i gestori HTTP utilizzino solo il protocollo ipv4 o "v6" per il protocollo ipv6.
Tipi
stringa
Default
null
Costante
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

Questa impostazione deve essere supportata dal gestore HTTP utilizzato per inviare una richiesta. force_ip_resolve è attualmente supportato solo dai gestori integrati cURL e dai gestori di flusso.

form_params

Riassunto
Usato per inviare una richiesta application/x-www-form-urlencoded POST.
Tipi
array
Costante
GuzzleHttp\RequestOptions::FORM_PARAMS

Matrice associativa di nomi di campi del modulo a valori dove ogni valore è una stringa o array di stringhe. Imposta l'intestazione Content-Type a application/x-www-form-urlencoded quando nessuna intestazione Content-Type è già presente.

$client->request('POST', '/post', [
    'form_params' => [
        'foo' => 'bar',
        'baz' => ['hi', 'there!']
    ]
]);

Nota

form_params non può essere usato con l'opzione multipart. Dovrete usare uno o l'altro. Usare form_params per application/x-www-form-urlencoded e multipart per le richieste multipart/form-data.

Questa opzione non può essere usata con body, multipart, o json

headers

Riassunto
Array associativo di intestazioni da aggiungere alla richiesta. Ogni chiave è il nome di un'intestazione e ogni valore è una stringa o un array di stringhe che rappresenta i valori del campo dell'intestazione.
Tipi
array
Default
Nessuno
Costante
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']
    ]
]);

Le intestazioni possono essere aggiunte come opzioni predefinite quando si crea un client. Quando le intestazioni sono usate come opzioni predefinite, sono applicate solo se la richiesta che viene creata non contiene già l'intestazione specifica. Questo include sia le richieste passate al client nei metodi send() e sendAsync() e richieste create dal client (ad esempio, request() e 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

Riassunto
Impostato a false per disabilitare il lancio di eccezioni su un protocollo HTTP (cioè risposte 4xx e 5xx). Le eccezioni sono lanciate per impostazione predefinita quando vengono riscontrati errori del protocollo HTTP.
Tipi
bool
Default
true
Costante
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

Attenzione

Questa opzione ha effetto solo se il vostro gestore ha il GuzzleHttp\Middleware::httpErrors middleware. Questo middleware viene aggiunto di default quando viene creato un client senza handler, e viene aggiunto di di default quando si crea un gestore con GuzzleHttp\default_handler.

idn_conversion

Riassunto

Supporto per i nomi di dominio internazionalizzati (IDN) (abilitato di default se intl estensione è disponibile).

Tipi
  • bool
  • int
Default

true se l'estensione intl è disponibile (e la libreria ICU è 4.6+ per PHP 7.2+), false altrimenti

Costante

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

Abilita/disabilita il supporto IDN, può anche essere usato per un controllo preciso combinando costanti IDNA_* (tranne IDNA_ERROR_*), vedere il parametro $options in idn_to_ascii() per maggiori dettagli.

json

Riassunto
L'opzione json è usata per caricare facilmente dati codificati JSON come corpo di una richiesta. Un'intestazione Content-Type di application/json sarà aggiunto se nessuna intestazione Content-Type è già presente nel messaggio.
Tipi
Qualsiasi tipo PHP che può essere gestito dalla funzione json_encode() di PHP.
Default
Nessuno
Costante
GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);

Ecco un esempio di utilizzo del tap middleware per vedere quale richiesta viene inviata sul filo.

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

Questa opzione di richiesta non supporta la personalizzazione dell'intestazione Content-Type o una qualsiasi delle opzioni di PHP json_encode() funzione. Se avete bisogno di personalizzare queste impostazioni, allora dovete passare i dati i dati codificati JSON nella richiesta usando l'opzione di richiesta body e si deve specificare la corretta intestazione Content-Type usando l'opzione headers opzione di richiesta.

Questa opzione non può essere usata con body, form_params, o multipart

multipart

Riassunto
Imposta il corpo della richiesta in un modulo multipart/form-data.
Tipi
array
Costante
GuzzleHttp\RequestOptions::MULTIPART

Il valore di multipart è un array di array associativi, ciascuno contenente le seguenti coppie chiave-valore:

  • name: (stringa, richiesto) il nome del campo del modulo
  • contents: (StreamInterface/resource/stringa, richiesto) I dati da usare in l'elemento del modulo.
  • headers: (array) array associativo opzionale di intestazioni personalizzate da usare con l'elemento del modulo.
  • filename: (stringa) Stringa opzionale da inviare come nome del file nella 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 non può essere usato con l'opzione form_params. Avrete bisogno di usare l'una o l'altra. Usare form_params per application/x-www-form-urlencoded e multipart per le richieste multipart/form-data.

Questa opzione non può essere usata con body, form_params, o json

on_headers

Riassunto

Un callable che viene invocato quando le intestazioni HTTP della risposta sono state ricevuto ma il corpo non ha ancora iniziato il download

Tipi
  • callable
Costante

GuzzleHttp\RequestOptions::ON_HEADERS

Il callable accetta un oggetto Psr\Http\Message\ResponseInterface. Se un'eccezione è lanciata dal callable, allora la promessa associata alla risposta sarà sarà rifiutata con un GuzzleHttp\Exception\RequestException che racchiude l eccezione che è stata lanciata.

Potrebbe essere necessario sapere quali intestazioni e codici di stato sono stati ricevuti prima che i dati possano essere scritti sul sink.

// 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

Quando si scrivono gestori HTTP, la funzione on_headers deve essere invocata prima di scrivere i dati nel corpo della risposta.

on_stats

Riassunto

on_stats permette di accedere alle statistiche di trasferimento di una richiesta e accedere ai dettagli di trasferimento di livello inferiore del gestore associato al proprio client. on_stats è un callable che viene invocato quando un gestore ha finito di inviare una richiesta. Il callback è invocato con le statistiche di trasferimento della richiesta, la risposta ricevuta o l errore incontrato. Incluso nei dati è la quantità totale di tempo impiegato per inviare la richiesta.

Tipi
  • callable
Costante

GuzzleHttp\RequestOptions::ON_STATS

Il callable accetta un oggetto GuzzleHttpTransferStats.

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

Riassunto

Definisce una funzione da invocare quando il trasferimento avanza.

Tipi
  • callable
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::PROGRESS

La funzione accetta i seguenti argomenti posizionali:

  • il numero totale di byte che ci si aspetta di scaricare, zero se sconosciuto
  • il numero di byte scaricati finora
  • il numero totale di byte che ci si aspetta di caricare
  • il numero di byte caricati finora
// Send a GET request to /get?foo=bar
$result = $client->request(
    'GET',
    '/',
    [
        'progress' => function(
            $downloadTotal,
            $downloadedBytes,
            $uploadTotal,
            $uploadedBytes
        ) {
            //do something
        },
    ]
);

proxy

Riassunto

Passa una stringa per specificare un proxy HTTP, o un array per specificare diversi proxy per diversi protocolli.

Tipi
  • stringa
  • array
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::PROXY

Passa una stringa per specificare un proxy per tutti i protocolli.

$client->request('GET', '/', ['proxy' => 'http://localhost:8125']);

Passa un array associativo per specificare i proxy HTTP per specifici schemi URI (cioè "http", "https"). Fornire una no coppia chiave-valore per fornire una lista di nomi di host che non dovrebbero essere sottoposti a proxy.

Nota

Guzzle popolerà automaticamente questo valore con il vostro ambiente NO_PROXY variabile d'ambiente. Tuttavia, quando si fornisce un proxy opzione di richiesta, sta all'utente fornire il valore no analizzato da la variabile d'ambiente NO_PROXY (ad esempio, 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

È possibile fornire URL proxy che contengono uno schema, un nome utente e una password. Per esempio, "http://username:[email protected]:10".

query

Riassunto

Array associativo di valori di query string o query string da aggiungere alla la richiesta.

Tipi
  • array
  • stringa
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::QUERY

// Send a GET request to /get?foo=bar
$client->request('GET', '/get', ['query' => ['foo' => 'bar']]);

Le stringhe di query specificate nell'opzione query sovrascriveranno tutti i valori di stringa di query forniti nell'URI di una richiesta.

// Send a GET request to /get?foo=bar
$client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);

read_timeout

Riassunto
Float che descrive il timeout da usare quando si legge un corpo in streaming
Tipi
float
Default
Il valore predefinito è quello dell'impostazione default_socket_timeout di PHP ini
Costante
GuzzleHttp\RequestOptions::READ_TIMEOUT

Il timeout si applica alle singole operazioni di lettura su un corpo in streaming (quando l'opzione stream è abilitata).

$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

Riassunto

Specifica dove il corpo di una risposta sarà salvato.

Tipi
  • stringa (percorso del file su disco)
  • fopen() risorsa
  • Psr\Http\Message\StreamInterface
Default

PHP temp stream

Costante

GuzzleHttp\RequestOptions::SINK

Passa una stringa per specificare il percorso di un file che memorizzerà il contenuto del corpo della risposta:

$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);

Passa una risorsa restituita da fopen() per scrivere la risposta in un flusso PHP:

$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$client->request('GET', '/stream/20', ['sink' => $resource]);

Passa un oggetto Psr\Http\Message\StreamInterface per trasmettere il corpo della risposta a un flusso PSR-7 aperto.

$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$stream = \GuzzleHttp\Psr7\Utils::streamFor($resource);
$client->request('GET', '/stream/20', ['save_to' => $stream]);

Nota

L'opzione di richiesta save_to è stata deprecata in favore dell'opzione sink opzione di richiesta. Fornire l'opzione save_to è ora un alias di sink.

ssl_key

Riassunto

Specificare il percorso di un file contenente una chiave SSL privata in formato PEM in formato PEM. Se è richiesta una password, allora imposta un array contenente il percorso alla chiave SSL nel primo elemento dell'array seguito dalla password richiesta per il certificato nel secondo elemento.

Tipi
  • stringa
  • array
Default

Nessuno

Costante

GuzzleHttp\RequestOptions::SSL_KEY

Nota

ssl_key è implementato dai gestori HTTP. Questo è attualmente solo supportato dal gestore cURL, ma potrebbe essere supportato da altri gestori di terze parti gestori di terze parti.

stream

Riassunto
Impostato su true per trasmettere una risposta piuttosto che scaricarla tutta in anticipo.
Tipi
bool
Default
false
Costante
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

Il supporto alle risposte in streaming deve essere implementato dal gestore HTTP usato da un client. Questa opzione potrebbe non essere supportata da ogni gestore HTTP, ma l'interfaccia interfaccia dell'oggetto risposta rimane la stessa indipendentemente dal fatto che sia supportata o meno dal gestore.

sincrono

Riassunto
Impostare a true per informare i gestori HTTP che si intende attendere la risposta. Questo può essere utile per le ottimizzazioni.
Tipi
bool
Default
nessuno
Costante
GuzzleHttp\RequestOptions::SYNCHRONOUS

verify

Riassunto

Descrive il comportamento di verifica del certificato SSL di una richiesta.

  • Impostare su true per abilitare la verifica del certificato SSL e utilizzare il bundle CA predefinito CA fornito dal sistema operativo.
  • Impostare su false per disabilitare la verifica del certificato (questo è insicuro!).
  • Impostare su una stringa per fornire il percorso di un bundle CA per abilitare la verifica utilizzando un certificato personalizzato.
Tipi
  • bool
  • stringa
Default

true

Costante

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

Se non avete bisogno di un bundle di certificati specifico, allora Mozilla fornisce un bundle CA comunemente usato che può essere scaricato qui (fornito dal manutentore di cURL). Una volta che avete un bundle CA disponibile su disco, potete impostare l'impostazione PHP ini "openssl.cafile" per puntare al percorso del al file, permettendovi di omettere l'opzione di richiesta "verify". Molti più dettagli sui certificati I certificati SSL possono essere trovati sul sito sito web cURL.

timeout

Riassunto
Float che descrive il timeout totale della richiesta in secondi. Usare 0 per aspettare indefinitamente (il comportamento predefinito).
Tipi
float
Default
0
Costante
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'

versione

Riassunto
Versione del protocollo da usare con la richiesta.
Tipi
stringa, float
Default
1.1
Costante
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);