Opcje żądaniaś

Możesz dostosować żądania tworzone i przesyłane przez klienta używając opcji żądania. Opcje żądania kontrolują różne aspekty żądania włączając w to nagłówki, parametry ciągu zapytania, ustawienia limitu czasu, treść żądania i wiele innych. żądania i wiele innych.

Wszystkie poniższe przykłady używają następującego klienta:

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

allow_redirects

Streszczenie

Opisuje zachowanie przekierowania dla żądania

Rodzaje
  • bool
  • array
Domyślnie
[
    'max' => 5,
    'strict' => false,
    'referer' => false,
    'protocols' => ['http', 'https'],
    'track_redirects' => false
]
Stała

GuzzleHttpRequestOptions::ALLOW_REDIRECTS

Ustaw na false aby wyłączyć przekierowania.

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

Ustawione na true (ustawienie domyślne), aby włączyć normalne przekierowania z maksymalną liczbą 5 przekierowań.

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

Można również przekazać tablicę asocjacyjną zawierającą następujące pary klucz-wartość:

  • max: (int, default=5) maksymalna liczba dozwolonych przekierowań.

  • strict: (bool, default=false) Ustaw na true, aby używać ścisłych przekierowań. Ścisłe przekierowania zgodne z RFC oznaczają, że żądania przekierowania POST są wysyłane jako POST, zamiast robić to, co robi większość przeglądarek, czyli przekierowywać żądania POST z żądaniami GET.

  • referer: (bool, default=false) Ustaw na true, aby włączyć dodawanie nagłówka Referer podczas przekierowania.

  • protocols: (array, default=['http', 'https']) Określa, które protokoły są dozwolone dla żądań przekierowania.

  • on_redirect: (callable) Wywołanie PHP, które jest wywoływane, gdy napotkane zostanie przekierowanie jest napotkane. Wywoływana jest z oryginalnym żądaniem i odpowiedzią odpowiedzią przekierowania, która została otrzymana. Każda wartość zwracana przez funkcję on_redirect jest ignorowana.

  • track_redirects: (bool) Gdy ustawione na true, każdy przekierowany URI i napotkany kod statusu będzie śledzony w X-Guzzle-Redirect-Heads. i napotkany kod będą śledzone w X-Guzzle-Redirect-History i X-Guzzle-Redirect-History. X-Guzzle-Redirect-Status-History odpowiednio w nagłówkach. Wszystkie URI i kody statusu będą przechowywane w kolejności, w jakiej napotkano przekierowania.

    Uwaga: Podczas śledzenia przekierowań nagłówek X-Guzzle-Redirect-History będzie wyklucza URI początkowego żądania, a X-Guzzle-Redirect-Status-History header wykluczy końcowy kod statusu.

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

Ostrzeżenie

Opcja ta działa tylko wtedy, gdy Twój handler posiada funkcję code class="docutils literal">GuzzleHttpMiddleware::redirect middleware. To oprogramowanie pośredniczące jest dodawane domyślnie, gdy tworzony jest klient bez handler'a, oraz jest dodawane domyślnie podczas tworzenia handlerów za pomocą GuzzleHttp\HandlerStack::create.

Uwaga

Opcja ta nie ma żadnego wpływu podczas tworzenia żądań za pomocą GuzzleHttpClient::sendRequest(). Aby zachować zgodność z PSR-18, każda odpowiedź przekierowania jest zwracana w takiej postaci, w jakiej jest.

auth

Streszczenie

Podaj tablicę parametrów uwierzytelniania HTTP, które mają być użyte w żądaniu. żądaniem. Tablica musi zawierać nazwę użytkownika w indeksie [0], hasło w indeksie [1], oraz opcjonalnie można podać wbudowany typ uwierzytelniania w index [2]. Przekaż null, aby wyłączyć uwierzytelnianie dla żądania.

Rodzaje
  • array
  • string
  • null
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::AUTH

Wbudowane typy uwierzytelniania są następujące:

podstawowe
Użyj podstawowego uwierzytelniania HTTP w nagłówku Authorization (domyślne ustawienie używane, jeśli nie podano żadnego). określone).
$client->request('GET', '/get', ['auth' => ['username', 'password']]);
skrót
Użyj digest authentication (musi być obsługiwane przez handler HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'digest']
]);

Uwaga

Obecnie jest to obsługiwane tylko przy użyciu handler'a cURL, ale planowane jest stworzenie zamiennika, który może być używany z dowolnym handlerem HTTP. planowane.

ntlm
Użyj Microsoft NTLM authentication (musi być obsługiwane przez handler HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'ntlm']
]);

Uwaga

Obecnie jest to obsługiwane tylko przy użyciu handler'a cURL.

bodyś

Streszczenie
p class="first">Opcja body jest używana do kontrolowania treści żądania zawierającego encję (np. PUT, POST, PATCH)

załączającego żądanie (np. PUT, POST, PATCH).

Rodzaje
  • string
  • fopen() resource
  • Psr\Message\StreamInterface
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::BODY

W tym ustawieniu można wybrać dowolny z następujących typów:

  • string

    // Możesz wysyłać żądania, które używają ciągu znaków jako ciała wiadomości.
    $client->request('PUT', '/put', ['body' => 'foo']);
    
  • zasób zwrócony z fopen()

    // Możesz wysyłać żądania, które używają zasobu strumienia jako ciała.
    $resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
    $client->request('PUT', '/put', ['body' => $resource]);
    
  • Psr

    // Możesz wysyłać żądania, które używają obiektu strumienia Guzzle jako ciała.
    $stream = GuzzleHttp::streamFor('content...');
    $client->request('POST', '/post', ['body' => $stream]);
    

Uwaga

Ta opcja nie może być używana z form_params, multipart, lub json.

certś

Streszczenie

Ustaw na ciąg znaków, aby określić ścieżkę do pliku zawierającego certyfikat klienta w formacie PEM sformatowany certyfikat po stronie klienta. Jeśli wymagane jest hasło, to ustaw na tablicę zawierającą ścieżkę do pliku PEM w pierwszym elemencie tablicy a następnie hasło wymagane do certyfikatu w drugim elemencie tablicy. element.

Rodzaje
  • string
  • array
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::CERT

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

cookies

Streszczenie
Określa, czy ciasteczka są używane w żądaniu, czy nie, jakiego słoika z ciasteczkami użyć lub jakie ciasteczka wysłać. lub jakich ciasteczek użyć lub jakie ciasteczka wysłać.
Rodzaje
GuzzleHttpCookieJarInterface
Domyślnie
Brak
Stała
GuzzleHttpRequestOptions::COOKIES

Musisz określić opcję cookies jako GuzzleHttp\CookieJarInterface lub false.

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

Ostrzeżenie

Opcja ta działa tylko wtedy, gdy Twój handler posiada oprogramowanie pośredniczące GuzzleHttp::cookies middleware. To oprogramowanie pośredniczące jest dodawane domyślnie, gdy tworzony jest klient bez handler'a, oraz jest dodawane domyślnie podczas tworzenia handlerów za pomocą GuzzleHttp\default_handler.

Wskazówka

Podczas tworzenia klienta, możesz ustawić domyślną opcję cookie na true aby użyć współdzielonej sesji cookie związanej z klientem.

connect_timeout

Streszczenie
Płynna wartość określająca ilość sekund, które należy odczekać podczas próby połączenia się z serwerem. z serwerem. Użyj 0 aby czekać w nieskończoność (zachowanie domyślne).
Rodzaje
float
Domyślnie
0
Stała
GuzzleHttpRequestOptions::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]);

Uwaga

To ustawienie musi być obsługiwane przez handler HTTP używany do wysyłania żądania. connect_timeout jest obecnie obsługiwane tylko przez wbudowany w cURL handler.

debug

Streszczenie

Ustaw na true lub ustaw na strumień PHP zwrócony przez fopen(), aby włączyć wyjście debugowania z handlerem użytym do wysłania żądania. Na przykład, podczas używania cURL do przesyłania żądań, będzie emitowany komunikat cURL o treści CURLOPT_VERBOSE zostanie wyemitowana. Gdy używasz wrappera strumienia PHP, będą emitowane powiadomienia stream wrappera będą emitowane powiadomienia. Jeśli ustawione na true, wyjście jest zapisywane do STDOUT PHP. Jeśli podany jest strumień PHP, wyjście jest zapisywane do tego strumienia.

Rodzaje
  • bool
  • fopen() resource
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::DEBUG

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

Uruchomienie powyższego przykładu spowodowałoby wyświetlenie czegoś takiego jak poniżej:

* 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

Streszczenie

Określ, czy Content-Encoding odpowiedzi (gzip, deflate, itp.) są automatycznie dekodowane.

Rodzaje
  • string
  • bool
Domyślnie

true

Stała

GuzzleHttpRequestOptions::DECODE_CONTENT

Opcja ta może być użyta do kontrolowania sposobu, w jaki kodowane są treści odpowiedzi obsługiwane. Domyślnie, decode_content jest ustawione na true, co oznacza, że każda gzipped lub deflowana odpowiedź zostanie zdekodowana przez Guzzle.

Gdy ustawione na false, ciało odpowiedzi nigdy nie jest dekodowane, co oznacza, że bajty przechodzą przez handler bez zmian.

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

Gdy ustawiona na łańcuch, bajty odpowiedzi są dekodowane, a wartość łańcuchowa podana w opcji decode_content jest przekazywana jako Accept-Encoding nagłówka żądania.

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

delayś

Streszczenie

Liczba milisekund do opóźnienia przed wysłaniem żądania.

Rodzaje
  • integer
  • float
Domyślnie

null

Stała

GuzzleHttpRequestOptions::DELAY

expectś

Streszczenie

Kontroluje zachowanie nagłówka "Expect: 100-Continue"

Rodzaje
  • bool
  • integer
Domyślnie

1048576

Stała

GuzzleHttpRequestOptions::EXPECT

Ustawione na true, aby włączyć nagłówek "Expect: 100-Continue" dla wszystkich żądań które wysyłają ciało. Ustaw na false, aby wyłączyć nagłówek "Expect: 100-Continue" nagłówek dla wszystkich żądań. Ustaw na liczbę, aby rozmiar ładunku musiał być większy niż ta liczba, aby wysłać nagłówek Expect. Ustawienie na liczba spowoduje wysłanie nagłówka Expect dla wszystkich żądań, w których nie można określić rozmiaru nie może być określony lub gdy ciało nie jest przewijane.

Domyślnie Guzzle dodaje nagłówek "Expect: 100-Continue", gdy rozmiar treści żądania jest większy niż 1 MB i żądanie korzysta z HTTP/1.1.

Uwaga

Opcja ta działa tylko w przypadku korzystania z protokołu HTTP/1.1. Protokoły HTTP/1.0 i HTTP/2.0 nie obsługują nagłówka "Expect: 100-Continue". Wsparcie dla obsługi przepływu pracy "Expect: 100-Continue" musi być zaimplementowane przez obsługę HTTP Guzzle używaną przez klienta.

force_ip_resolve

Streszczenie
Ustaw na "v4", jeśli chcesz, aby HTTP handlers używały tylko protokołu ipv4 lub "v6" dla protokołu ipv6.
Rodzaje
ciąg
Domyślnie
null
Stała
GuzzleHttpRequestOptions::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']);

Uwaga

To ustawienie musi być obsługiwane przez handler HTTP używany do wysyłania żądania. force_ip_resolve jest obecnie obsługiwane tylko przez wbudowany cURL i stream handlers.

form_params

Streszczenie
Służy do wysyłania żądania application/x-www-form-urlencoded POST.
Rodzaje
tablica
Stała
GuzzleHttpRequestOptions::FORM_PARAMS

Tablica asocjacyjna nazw pól formularza z wartościami, gdzie każda wartość jest łańcuchem lub tablicą łańcuchów. Ustawia nagłówek Content-Type na application/x-www-form-urlencoded, jeśli nie występuje nagłówek Content-Type jest obecny.

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

Uwaga

form_params nie może być użyty z opcją multipart. Będziesz musiał użyć jednego lub drugiego. Użyj form_params dla application/x-www-form-urlencoded dla żądań, oraz multipart dla żądań multipart/form-data.

Ta opcja nie może być używana z body, multipart, lub json.

headersś

Streszczenie
Tablica asocjacyjna nagłówków, które mają zostać dodane do żądania. Każdy klucz jest nazwą nagłówka, a każda wartość jest łańcuchem lub tablicą łańcuchów reprezentującymi wartości pól nagłówka.
Rodzaje
tablica
Domyślne ustawienia
Brak
Stała
GuzzleHttpRequestOptions::HEADERS
// Set various headers on a request
$client->request('GET', '/get', [
    'headers' => [
        'User-Agent' => 'testing/1.0',
        'Accept'     => 'application/json',
        'X-Foo'      => ['Bar', 'Baz']
    ]
]);

Nagłówki mogą zostać dodane jako opcje domyślne podczas tworzenia klienta. Gdy nagłówki są używane jako opcje domyślne, są one stosowane tylko wtedy, gdy tworzone żądanie nie zawiera już określonego nagłówka. Dotyczy to zarówno żądań przekazywanych do klienta w metodach send() i sendAsync(), jak i żądania tworzone przez klienta (np. request() i 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

Streszczenie
Ustaw na false, aby wyłączyć rzucanie wyjątków na błędy protokołu HTTP (tj. odpowiedzi 4xx i 5xx). błędy (tj. odpowiedzi 4xx i 5xx). Wyjątki są domyślnie rzucane, gdy Napotkane błędy protokołu HTTP.
Rodzaje
bool
Domyślnie
true
Stała
GuzzleHttpRequestOptions::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

Ostrzeżenie

Opcja ta działa tylko wtedy, gdy Twój handler posiada funkcję GuzzleHttpMiddleware::httpErrors middleware. To oprogramowanie pośrednie jest dodawane domyślnie, gdy tworzony jest klient bez żadnego handler'a, oraz jest dodawane domyślnie podczas tworzenia handlerów za pomocą GuzzleHttp\default_handler.

idn_conversion

Streszczenie

Obsługa domen międzynarodowych (IDN) (domyślnie włączona, jeśli dostępne jest rozszerzenie intl).

Rodzaje
  • bool
  • int
Domyślnie

true jeśli rozszerzenie intl jest dostępne (a biblioteka ICU ma wersję 4.6+ dla PHP 7.2+), false w przeciwnym wypadku

Stała

GuzzleHttpRequestOptions::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

Włącza/wyłącza obsługę IDN, może być również użyta do precyzyjnej kontroli poprzez kombinację stałych IDNA_* (z wyjątkiem IDNA_ERROR_*), patrz $options parametr w idn_to_ascii() dokumentacji, aby uzyskać więcej szczegółów.

json

Streszczenie
Opcja json jest używana do łatwego przesyłania danych zakodowanych w JSON jako ciało żądania. Nagłówek Content-Type o wartości application/json zostanie jeśli w wiadomości nie ma jeszcze nagłówka Content-Type.
Rodzaje
Dowolny typ PHP, który może być obsługiwany przez funkcję json_encode().
Domyślnie
Brak
Stała
GuzzleHttpRequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);

Oto przykład użycia tap middleware, aby zobaczyć jakie żądanie jest wysyłane przez kabel.

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

Uwaga

Ta opcja żądania nie obsługuje dostosowywania nagłówka Content-Type ani żadnej z opcji PHP json_encode() funkcji. Jeśli potrzebujesz dostosować te ustawienia, to musisz przekazać zakodowane dane JSON zakodowane dane do żądania za pomocą opcji body request i musisz określić poprawny nagłówek Content-Type używając opcji headers opcji żądania.

Opcja ta nie może być używana z body, form_params, lub multipart.

multipart

Streszczenie
Ustawia ciało żądania na formularz multipart/form-data.
Rodzaje
tablica
Stała
GuzzleHttpRequestOptions::MULTIPART

Wartością multipart jest tablica tablic asocjacyjnych, z których każda zawiera następujące pary klucz-wartość:

  • nazwa: (string, wymagane) nazwa pola formularza
  • content: (StreamInterface/resource/string, wymagane) Dane, które mają być użyte w elemencie formularza.
  • headers: (array) Opcjonalna tablica asocjacyjna niestandardowych nagłówków do użycia z elementem formularza.
  • filename: (string) Opcjonalny ciąg znaków do wysłania jako nazwa pliku w części.
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'
        ],
    ]
]);

Uwaga

multipart nie może być używany z opcją form_params. Będziesz musiał użyć jednej lub drugiej. Użyj form_params dla application/x-www-form-urlencoded dla żądań, oraz multipart dla żądań multipart/form-data.

Ta opcja nie może być użyta z body, form_params, lub json.

on_headers

Streszczenie

Wywołanie, które jest wywoływane, gdy nagłówki HTTP odpowiedzi zostały odebrane, ale ciało nie rozpoczęło jeszcze pobierania. zostały odebrane, ale ciało nie zaczęło się jeszcze pobierać.

Rodzaje
  • callable
Stała

GuzzleHttpRequestOptions::ON_HEADERS

Wywołanie przyjmuje obiekt Psr\Message\ResponseInterface. Jeśli wyjątek zostanie rzucony przez wywołanie, wówczas obietnica związana z odpowiedzią zostanie zostanie odrzucona wraz z GuzzleHttp\Exception\RequestException, który opakowuje wyjątek, który został rzucony. wyjątek, który został rzucony.

Możesz potrzebować wiedzieć, jakie nagłówki i kody statusu zostały odebrane, zanim dane mogą zostać zapisane do kanału.

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

Uwaga

Podczas pisania handlerów HTTP, funkcja on_headers musi być wywołana przed zapisem danych do treści odpowiedzi.

on_stats

Streszczenie

on_stats pozwala uzyskać dostęp do statystyk transferu żądania żądania oraz dostęp do szczegółów transferu niższego poziomu dla handlerów powiązanego z twoim klientem. on_stats jest wywołaniem, które jest wywoływane gdy handler zakończy wysyłanie żądania. Wywołanie zwrotne jest wywoływane z statystykami transferu dotyczącymi żądania, otrzymanej odpowiedzi, lub napotkanym błędzie. W danych zawarta jest całkowita ilość czasu do wysłania żądania.

Rodzaje
  • callable
Stała

GuzzleHttpRequestOptions::ON_STATS

Wywoływalna przyjmuje obiekt 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ś

Streszczenie

Definiuje funkcję, która będzie wywoływana, gdy nastąpi postęp transferu.

Rodzaje
  • callable
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::PROGRESS

Funkcja przyjmuje następujące argumenty pozycyjne:

  • całkowita liczba bajtów, które mają być pobrane, zero jeśli nieznana
  • liczba bajtów pobranych do tej pory
  • całkowita liczba bajtów, które mają zostać przesłane
  • liczba bajtów przesłanych do tej pory
// Send a GET request to /get?foo=bar
$result = $client->request(
    'GET',
    '/',
    [
        'progress' => function(
            $downloadTotal,
            $downloadedBytes,
            $uploadTotal,
            $uploadedBytes
        ) {
            //do something
        },
    ]
);

proxy

Streszczenie

Podaj ciąg znaków aby określić proxy HTTP, lub tablicę aby określić różnych proxy dla różnych protokołów.

Rodzaje
  • string
  • array
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::PROXY

Podaj ciąg znaków, aby określić proxy dla wszystkich protokołów.

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

Podaj tablicę asocjacyjną, aby określić serwery pośredniczące HTTP dla określonych schematów URI (np. "http", "https"). Przekazuje no parę klucz-wartość, aby przekazać listę nazw hostów, które nie powinny być prokserowane.

Uwaga

Guzzle automatycznie uzupełni tę wartość zmienną środowiskową NO_PROXY zmienną środowiskową. Jednakże, podczas dostarczania proxy opcja żądania, to od Ciebie zależy, czy podasz no wartość odczytaną z zmiennej środowiskowej NO_PROXY (np. 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
    ]
]);

Uwaga

Możesz podać adresy URL proxy, które zawierają schemat, nazwę użytkownika i hasło. Na przykład, "http://username:[email protected]:10".

queryś

Streszczenie

Tablica asocjacyjna wartości łańcucha zapytania lub łańcuch zapytania do dodania do żądania.

Rodzaje
  • array
  • string
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::QUERY

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

Łańcuchy zapytań określone w opcji query będą nadpisywać wszystkie wartości łańcuchów zapytań dostarczonych w URI żądania.

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

read_timeout

Streszczenie
Float opisujący timeout do użycia podczas odczytu ciała strumieniowego
Rodzaje
float
Domyślnie
Domyślnie przyjmuje wartość ustawienia default_socket_timeout PHP ini.
Stała
GuzzleHttpRequestOptions::READ_TIMEOUT

Timeout ma zastosowanie do pojedynczych operacji odczytu ciała strumieniowego (gdy włączona jest opcja stream).

$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

Streszczenie

Określ, gdzie zostanie zapisane ciało odpowiedzi.

Rodzaje
  • string (ścieżka do pliku na dysku)
  • fopen() resource
  • Psr\Message\StreamInterface
Domyślnie

PHP temp stream

Stała

GuzzleHttpRequestOptions::SINK

Podaj ciąg znaków, aby określić ścieżkę do pliku, który będzie przechowywał zawartość ciała odpowiedzi:

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

Przekazuje zasób zwrócony z fopen(), aby zapisać odpowiedź do strumienia PHP:

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

Przekazuje obiekt Psr\Message\StreamInterface do strumieniowego przesyłania treści odpowiedzi do otwartego strumienia PSR-7.

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

Uwaga

Opcja żądania save_to została wycofana na rzecz opcji żądania sink. sink na rzecz opcji żądania sink. Opcja save_to jest teraz aliasem opcji save_to. sink.

ssl_key

Streszczenie

Określ ścieżkę do pliku zawierającego prywatny klucz SSL w formacie PEM w formacie PEM. Jeśli wymagane jest hasło, to ustawione na tablicę zawierającą ścieżkę do klucza SSL w pierwszym elemencie tablicy, a następnie wymagane hasło. do klucza SSL w pierwszym elemencie tablicy, a następnie hasło wymagane dla certyfikatu w drugim elemencie.

Rodzaje
  • string
  • array
Domyślnie

Brak

Stała

GuzzleHttpRequestOptions::SSL_KEY

Uwaga

ssl_key jest implementowany przez handler'y HTTP. Obecnie jest to obsługiwane tylko obsługiwane przez handler cURL, ale może być obsługiwane przez inne handler'y z trzeciej części. handlery.

streamś

Streszczenie
Ustawione na true, aby przesyłać odpowiedź strumieniowo, zamiast pobierać ją całą z góry.
Rodzaje
bool
Domyślnie
false
Stała
GuzzleHttpRequestOptions::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);
}

Uwaga

Obsługa odpowiedzi strumieniowych musi być zaimplementowana przez handler HTTP używany przez klienta. Opcja ta może nie być obsługiwana przez każdy handler HTTP, ale interfejs interfejs obiektu odpowiedzi pozostaje taki sam niezależnie od tego, czy czy jest on wspierany przez dany handler.

synchroniczne

Streszczenie
Ustaw wartość true, aby poinformować obsługę HTTP, że zamierzasz czekać na odpowiedź odpowiedź. Może to być przydatne przy optymalizacji.
Rodzaje
bool
Domyślnie
brak
Stała
GuzzleHttpRequestOptions::SYNCHRONOUS

verifyś

Streszczenie

Opisuje zachowanie weryfikacji certyfikatu SSL dla danego żądania.

  • Ustaw na true, aby włączyć weryfikację certyfikatów SSL i użyć domyślnego CA dostarczonego przez system operacyjny.
  • Ustaw na false, aby wyłączyć weryfikację certyfikatów (jest to niezabezpieczone!).
  • Ustaw na łańcuch, aby podać ścieżkę do pakietu CA, aby umożliwić weryfikację za pomocą certyfikatu własnego.
Rodzaje
  • bool
  • string
Domyślnie

true

Stała

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

Jeśli nie potrzebujesz konkretnego pakietu certyfikatów, Mozilla udostępnia powszechnie używany pakiet powszechnie używany pakiet CA, który można pobrać tutaj (dostarczony przez opiekuna cURL). Gdy masz już pakiet CA dostępny na dysku, możesz ustawić ustawienie "openssl.cafile" w PHP ini tak, aby wskazywało ścieżkę do pliku pliku, co pozwoli na pominięcie opcji "verify". Dużo więcej szczegółów na temat certyfikatów SSL można znaleźć na stronie stronie cURL.

timeout

Streszczenie
Float opisujący całkowity timeout żądania w sekundach. Użyj 0 aby czekać w nieskończoność (zachowanie domyślne).
Rodzaje
float
Domyślnie
0
Stała
GuzzleHttpRequestOptions::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'

version

Streszczenie
Wersja protokołu, która ma być użyta w żądaniu.
Rodzaje
string, float
Domyślnie
1.1
Stała
GuzzleHttpRequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);