Užklausos parinktys

Kliento sukurtas ir perduotas užklausas galite pritaikyti naudodami užklausų parinktis. Užklausos parinktys valdo įvairius užklausos aspektus įskaitant antraštes, užklausos eilutės parametrus, laiko limito nustatymus, užklausos teksto užklausą ir dar daugiau.

Visuose šiuose pavyzdžiuose naudojamas šis klientas:

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

allow_redirects

Santrauka

Aprašoma užklausos nukreipimo elgsena

Tipai
  • bool
  • array
Numatytoji
307847298983429311951
    'max' => 5,
    'strict' => false,
    'referer' => false,
    'protocols' => ['http', 'https'],
    'track_redirects' => false
]
Nuolatinis

GuzzleHttp\RequestOptions::ALLOW_REDIRECTS

Nustatykite į false, kad išjungtumėte nukreipimus.

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

Nustatykite į true (numatytasis nustatymas), kad įjungtumėte įprastus nukreipimus, kurių maksimalus skaičius yra 5.

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

Taip pat galite perduoti asocijuotą masyvą, kuriame yra šios rakto ir vertės poros:

  • max: (int, numatytoji reikšmė=5) didžiausias leistinas nukreipimų skaičius.

  • griežtas: (bool, numatytasis=false) Nustatykite true, jei norite naudoti griežtus nukreipimus. Griežtas RFC reikalavimus atitinkantis nukreipimas reiškia, kad POST nukreipimo užklausos siunčiamos kaip POST užklausos, o ne tai, ką daro dauguma naršyklių, t. y. nukreipia POST užklausas su GET užklausomis.

  • referer: (bool, numatytasis=false) Nustatykite true, kad būtų galima pridėti refererį antraštę nukreipiant.

  • protokolai: (masyvas, numatytasis=['http', 'https']) Nurodyta, kurie protokolai yra leidžiami nukreipimo užklausoms.

  • on_redirect: (calllable) PHP calllable, kuris iškviečiamas, kai atliekamas nukreipimas susiduriama su peradresavimu. Callable iškviečiamas su pradine užklausa ir gautu nukreipimo atsakymu. Bet kokia grąžinimo reikšmė iš on_redirect funkcija ignoruojama.

  • Track_redirects: (bool) Kai nustatyta į true, kiekvienas nukreiptas URI ir būsena kodas bus stebimas X-Guzzle-Redirect-History ir X-Guzzle-Redirect-Status-History antraštės. Visi URI ir būsenos kodai bus saugomi tokia tvarka, kokia buvo rasti nukreipimai.

    Pastaba: Sekant nukreipimus, X-Guzzle-Redirect-History antraštė neįtrauks pradinės užklausos URI ir X-Guzzle-Redirect-Status-History antraštė neįtrauks galutinio būsenos kodo.

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

Įspėjimas

Ši parinktis turi poveikį tik tuo atveju, jei tvarkyklė turi GuzzleHttp\Middleware::redirect tarpinę programinę įrangą. Ši tarpinė programinė įranga pridedama pagal numatytuosius nustatymus, kai klientas sukuriamas be tvarkyklės, ir pridedama pagal numatytuosius nustatymus, kai tvarkiklis kuriamas naudojant GuzzleHttp\HandlerStack::create.

Pastaba

Ši parinktis neturi jokio poveikio, kai užklausos atliekamos naudojant GuzzleHttp\Client::sendRequest(). Siekiant laikytis PSR-18 reikalavimų, bet koks nukreipimo atsakymas grąžinamas toks, koks yra.

auth

Santrauka

Perduokite HTTP autentifikavimo parametrų masyvą, kuris bus naudojamas su užklausą. Masyve turi būti vartotojo vardas indekse 3078472989834293119510], slaptažodis indekse indeksas [1], ir pasirinktinai galite nurodyti integruotą autentifikavimo tipą index [2]. Perduokite null, kad išjungtumėte autentifikavimą užklausai

Tipai
  • masyvas
  • string
  • null
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::AUTH

Įdiegti šie autentifikavimo tipai:

pagrindinis
Naudokite pagrindinį HTTP autentifikavimą Authorization antraštėje (numatytasis nustatymas, naudojamas, jei jo nėra nurodyta).
$client->request('GET', '/get', ['auth' => ['username', 'password']]);
suvestinė
Naudokite digest autentifikavimą (turi palaikyti HTTP tvarkyklė).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'digest']
]);

Pastaba

Šiuo metu tai palaikoma tik naudojant cURL tvarkyklę, tačiau sukurti pakaitalą, kurį būtų galima naudoti su bet kuriuo HTTP tvarkytuvu. planuojama.

ntlm
Naudokite Microsoft NTLM autentifikavimą (turi palaikyti HTTP tvarkyklė).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'ntlm']
]);

Pastaba

Šiuo metu tai palaikoma tik naudojant cURL tvarkyklę.

body

Santrauka

Parinktis body naudojama esybės kūnui valdyti. PUT, POST, PATCH).

Tipai
  • eilutė
  • fopen() resursas
  • Psr\Http\Message\StreamInterface
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::BODY

Šį nustatymą galima nustatyti į bet kurį iš šių tipų:

  • eilutė

    // Galite siųsti užklausas, kuriose kaip pranešimo tekstas naudojama eilutė.
    $client->request('PUT', '/put', 307847298983429311951'body' => 'foo']);
    
  • išteklius, grąžintas iš fopen()

    // Galite siųsti užklausas, kurių kūne naudojamas srauto išteklius.
    $resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
    $client->request('PUT', '/put', ['body' => $resource]);
    
  • Psr\Http\Message\StreamInterface

    // Galite siųsti užklausas, kurių kūne naudojamas "Guzzle" srauto objektas
    $stream = GuzzleHttp\Psr7\Utils::streamFor('turinys...');
    $client->request('POST', '/post', 307847298983429311951'body' => $stream]);
    

Pastaba

Šios parinkties negalima naudoti su form_params, multipart arba json.

cert

Santrauka

Nustatykite į eilutę, kad nurodytumėte kelią iki failo, kuriame yra PEM suformatuotą kliento pusės sertifikatą. Jei reikalingas slaptažodis, tada nustatykite į masyvą, kurio pirmajame masyvo elemente yra kelias į PEM failą po kurio antrajame masyvo elemente pateikiamas sertifikatui reikalingas slaptažodis elementas.

Tipai
  • eilutė
  • masyvas
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::CERT

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

cookies

Santrauka
Nurodo, ar užklausoje naudojami slapukai, ar ne, arba kokie slapukai stiklainį naudoti arba kokius slapukus siųsti.
Tipai
GuzzleHttp\Cookie\CookieJarInterface
Numatytoji
Nėra
Nuolatinis
GuzzleHttp\RequestOptions::COOKIES

Slapukų parinktį turite nurodyti kaip GuzzleHttp\Cookie\CookieJarInterface arba false.

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

Įspėjimas

Ši parinktis turi poveikį tik tuo atveju, jei tvarkyklė turi GuzzleHttp\Middleware::cookies tarpinę programinę įrangą. Ši tarpinė programinė įranga pridedama pagal numatytuosius nustatymus, kai klientas sukuriamas be tvarkyklės, ir pridedama pagal numatytuosius nustatymus, kai tvarkiklis kuriamas naudojant GuzzleHttp\default_handler.

Patarimas

Kurdami klientą galite nustatyti numatytąją slapukų parinktį true kad būtų naudojama bendra slapukų sesija, susieta su klientu.

connect_timeout

Santrauka
Slankioji vertė, nusakanti sekundžių skaičių, kurį reikia laukti bandant prisijungti prie serverio. Naudokite 0, jei norite laukti neribotą laiką (numatytoji elgsena).
Tipai
float
Numatytoji
0
Nuolatinis
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]);

Pastaba

Šį nustatymą turi palaikyti užklausai siųsti naudojama HTTP tvarkyklė. connect_timeout šiuo metu palaiko tik integruota cURL tvarkyklė.

debug

Santrauka

Nustatyti į true arba nustatyti į PHP srautą, grąžinamą fopen() į įjungti derinimo išvestį su tvarkykle, naudojama užklausai siųsti. Pavyzdžiui, kai užklausoms perduoti naudojamas cURL, cURL verbis CURLOPT_VERBOSE bus išsiųstas. Naudojant PHP srauto apvyniotuvą, srauto apvyniotuvas bus siunčiami pranešimai. Jei nustatyta reikšmė true, išvestis rašoma į PHP STDOUT. Jei pateikiamas PHP srautas, išvestis rašoma į srautą.

Tipai
  • bool
  • fopen() resursas
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::DEBUG

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

Paleidus pirmiau pateiktą pavyzdį, gautumėte tokį rezultatą:

* 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

Santrauka

Nurodykite, ar Content-Encoding atsakymai (gzip, deflate ir t. t.) yra automatiškai dekoduojami.

Tipai
  • eilutė
  • bool
Numatytoji

true

Nuolatinis

GuzzleHttp\RequestOptions::DECODE_CONTENT

Šią parinktį galima naudoti norint valdyti, kaip turinio koduotus atsakymo kūnus tvarkomi atsakymai. Pagal numatytuosius nustatymus decode_content nustatyta reikšmė true, t. y. bet koks gzipped arba deflated atsakymą "Guzzle" iššifruos.

Nustačius false, atsakymo kūnas niekada neiššifruojamas, t. y. baitai perduodami tvarkytojui nepakeisti.

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

Nustačius eilutę, atsakymo baitai iššifruojami ir eilutės reikšmė pateikta decode_content parinkčiai, perduodama kaip Accept-Encoding. užklausos antraštė.

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

delay

Santrauka

Milisekundžių skaičius, kurį reikia atidėti prieš siunčiant užklausą.

Tipai
  • sveikasis skaičius
  • float
Numatytoji

null

Nuolatinis

GuzzleHttp\RequestOptions::DELAY

expect

Santrauka

Valdo antraštės "Expect: 100-Continue" elgseną.

Tipai
  • bool
  • sveikasis skaičius
Numatytoji

1048576

Nuolatinis

GuzzleHttp\RequestOptions::EXPECT

Nustatykite į true, kad įjungtumėte visų užklausų antraštę "Expect: 100-Continue". kurios siunčia kūną. Nustatykite į false, kad išjungtumėte "Expect: 100-Continue". antraštę visoms užklausoms. Nustatykite į skaičių, kad naudingosios apkrovos dydis būtų būtų didesnis už šį skaičių, kad būtų išsiųsta "Expect" antraštė. Nustatymas į a skaičių, bus siunčiama "Expect" antraštė visoms užklausoms, kurių dydis krovinio negalima nustatyti arba kai krovinio negalima atsukti.

Pagal numatytuosius nustatymus "Guzzle" prideda antraštę "Expect: 100-Continue", kai užklausos kūno dydis yra didesnis nei 1 MB ir užklausoje naudojamas HTTP/1.1.

Pastaba

Ši parinktis galioja tik naudojant HTTP/1.1. HTTP/1.0 ir HTTP/2.0 protokolai nepalaiko antraštės "Expect: 100-Continue". "Expect: 100-Continue" tvarkymo palaikymas turi būti įgyvendinti kliento naudojamuose "Guzzle" HTTP tvarkytuvuose.

force_ip_resolve

Santrauka
Nustatykite "v4", jei norite, kad HTTP tvarkyklės naudotų tik ipv4 protokolą, arba "v6", jei norite naudoti ipv6 protokolą.
Tipai
eilutė
Numatytoji
null
Nuolatinis
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']);

Pastaba

Šį nustatymą turi palaikyti užklausai siųsti naudojama HTTP tvarkyklė. force_ip_resolve šiuo metu palaiko tik integruotas cURL ir srauto tvarkyklės.

form_params

Santrauka
Naudojamas siųsti application/x-www-form-urlencoded POST užklausą.
Tipai
masyvas
Nuolatinis
GuzzleHttp\RequestOptions::FORM_PARAMS

Asocijuotas formos laukų pavadinimų ir reikšmių masyvas, kuriame kiekviena reikšmė yra eilutė arba eilučių masyvas. Nustato Content-Type antraštę į application/x-www-form-urlencoded, kai dar nėra Content-Type antraštės nėra.

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

Pastaba

form_params negalima naudoti su multipart parinktimi. Turėsite naudoti vieną arba kitą. Naudokite form_params application/x-www-form-urlencoded ir multipart užklausoms multipart/form-data.

Šios parinkties negalima naudoti su body, multipart arba json.

antraštės

Santrauka
Asocijuotas antraštės, pridedamos prie užklausos, masyvas. Kiekvienas raktas yra antraštės pavadinimas, o kiekviena reikšmė - eilutė arba eilutės masyvas. reiškiančių antraštės lauko reikšmes.
Tipai
masyvas
Numatytosios reikšmės
Nėra
Nuolatinis
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']
    ]
]);

Kuriant klientą antraštės gali būti pridėtos kaip numatytoji parinktis. Kai antraštės naudojamos kaip numatytoji parinktis, jos taikomos tik tada, jei kuriama užklausa dar nėra konkrečios antraštės. Tai taikoma ir užklausoms, perduotoms send() ir sendAsync() metodais, ir užklausas sukurtus kliento (pavyzdžiui, request() ir 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

Santrauka
Nustatykite į false, kad išjungtumėte HTTP protokolo išimčių išmetimą. klaidų (t. y. 4xx ir 5xx atsakymų). Pagal numatytuosius nustatymus išimtys išmetamos, kai susiduriama su HTTP protokolo klaidomis.
Tipai
bool
Numatytoji
true
Nuolatinis
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

Įspėjimas

Ši parinktis turi poveikį tik tuo atveju, jei tvarkyklė turi GuzzleHttp\Middleware::httpErrors tarpinę programinę įrangą. Ši tarpinė programinė įranga pridedama pagal numatytuosius nustatymus, kai klientas sukuriamas be tvarkyklės, ir pridedama GuzzleHttp\default_handler.

idn_conversion

Santrauka

Tarptautinių domenų vardų (IDN) palaikymas (įjungtas pagal numatytuosius nustatymus, jei intl plėtinys yra)

Tipai
  • bool
  • int
Numatytoji

true jei intl plėtinys yra (ir ICU biblioteka yra 4.6+ PHP 7.2+), false kitaip

Nuolatinis

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

Įjungia / išjungia IDN palaikymą, taip pat gali būti naudojamas tiksliam valdymui derinant IDNA_* konstantas (išskyrus IDNA_ERROR_*), žr. $options parametrą idn_to_ascii() Išsamesnės informacijos rasite dokumentacijoje.

json

Santrauka
json parinktis naudojama norint lengvai įkelti JSON koduotus duomenis kaip užklausos kūną. Turinio tipo antraštė application/json bus pridėta, jei pranešime dar nėra Content-Type antraštės.
Tipai
Bet koks PHP tipas, kurį galima valdyti PHP json_encode() funkcija.
Numatytoji
Nėra
Nuolatinis
GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);

Štai pavyzdys, kaip naudojant tap tarpinę programinę įrangą matyti, kokia užklausa siunčiama per laidą.

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

Pastaba

Ši užklausos parinktis nepalaiko Content-Type antraštės pritaikymo arba bet kurios PHP funkcijos json_encode() parinktys. funkcijos. Jei norite pritaikyti šiuos nustatymus, turite perduoti JSON užkoduotus duomenis į užklausą įtraukti patys, naudodami body užklausos parinktį ir turite nurodyti teisingą Content-Type antraštę naudodami headers užklausos parinktį.

Šios parinkties negalima naudoti su body, form_params arba multipart.

multipart

Santrauka
Nustato užklausos kūną į multipart/form-data formą.
Tipai
masyvas
Nuolatinis
GuzzleHttp\RequestOptions::MULTIPART

multipart reikšmė yra asocijuotųjų masyvų masyvas, kuriame yra šios rakto ir vertės poros:

  • pavadinimas: (eilutė, privaloma) formos lauko pavadinimas
  • turinys: (StreamInterface/resource/string, privaloma) Duomenys, kuriuos reikia naudoti formos elemente.
  • antraštės: (masyvas) Neprivalomas asocijuotas pasirinktinių antraščių masyvas, naudojamas su formos elementą.
  • filename: (eilutė) Neprivaloma eilutė, kuri siunčiama kaip failo pavadinimas dalyje.
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'
        ],
    ]
]);

Pastaba

multipart negalima naudoti su form_params parinktimi. Jums reikės naudoti vieną arba kitą. Naudokite form_params, jei norite naudoti application/x-www-form-urlencoded. ir multipart užklausoms multipart/form-data.

Šios parinkties negalima naudoti su body, form_params arba json.

on_headers

Santrauka

Iškviečiama, kai atsakymo HTTP antraštės turi gautas, bet dar nepradėtas siųsti atsakymo turinys

Tipai
  • callable
Nuolatinis

GuzzleHttp\RequestOptions::ON_HEADERS

Iškviečiamoji funkcija priima Psr\Http\Message\ResponseInterface objektą. Jei išimtis išmetama, tuomet su atsakymu susijęs pažadas bus atmetamas su GuzzleHttp\Exception\RequestException, kuris apima išmesta išimtis.

Prieš įrašant duomenis į kriauklę gali prireikti sužinoti, kokios antraštės ir būsenos kodai buvo gauti.

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

Pastaba

Rašant HTTP tvarkykles turi būti iškviečiama on_headers funkcija prieš įrašant duomenis į atsakymo kūną.

on_stats

Santrauka

on_stats leidžia gauti prieigą prie perdavimo statistikos apie užklausą ir pasiekti žemesnio lygio perdavimo informaciją apie tvarkytoją susietą su jūsų klientu. on_stats yra iškviečiama funkcija, kuri iškviečiama kai tvarkyklė baigia siųsti užklausą. Grįžtamasis skambutis iškviečiamas su perdavimo statistika apie užklausą, gautą atsakymą arba įvykusią klaidą. Į šiuos duomenis įeina bendras laikas, per kurį siųsti užklausą.

Tipai
  • callable
Nuolatinis

GuzzleHttp\RequestOptions::ON_STATS

Iškviečiamoji komanda priima GuzzleHttp\TransferStats objektą.

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

Santrauka

Apibrėžia funkciją, kuri iškviečiama, kai pasiekiama perdavimo pažanga.

Tipai
  • callable
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::PROGRESS

Funkcijai priimami šie poziciniai argumentai:

  • bendras baitų, kuriuos tikimasi atsisiųsti, skaičius, jei nežinomas - nulis.
  • iki šiol atsisiųstų baitų skaičius
  • bendras baitų, kuriuos tikimasi įkelti, skaičius.
  • iki šiol įkeltų baitų skaičius
// Send a GET request to /get?foo=bar
$result = $client->request(
    'GET',
    '/',
    [
        'progress' => function(
            $downloadTotal,
            $downloadedBytes,
            $uploadTotal,
            $uploadedBytes
        ) {
            //do something
        },
    ]
);

proxy

Santrauka

Perduokite eilutę, kad nurodytumėte HTTP tarpinį serverį, arba masyvą, kad nurodytumėte skirtingus tarpinius serverius skirtingiems protokolams.

Tipai
  • eilutė
  • masyvas
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::PROXY

Perduokite eilutę, kad nurodytumėte visų protokolų tarpininką.

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

Perduokite asocijuotą masyvą, kad nurodytumėte konkrečių URI schemų HTTP tarpininkus (t. y. "http", "https"). Pateikite no rakto ir vertės porą, kad pateiktumėte sąrašą prievadų vardų, į kuriuos neturėtų būti nukreiptas tarpinis ryšys.

Pastaba

"Guzzle" automatiškai užpildys šią vertę jūsų aplinkos NO_PROXY aplinkos kintamuoju. Tačiau, kai pateikiamas proxy užklausos parinktį, turite pateikti no reikšmę, parsisiųstą iš NO_PROXY aplinkos kintamojo (pvz., 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
    ]
]);

Pastaba

Galite pateikti tarpinių serverių URL, kuriuose yra schema, vartotojo vardas ir slaptažodis. Pavyzdžiui, "http://username:[email protected]:10".

užklausa

Santrauka

Asocijuotas užklausos eilutės reikšmių masyvas arba užklausos eilutė, prie kurios reikia pridėti užklausą.

Tipai
  • masyvas
  • string
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::QUERY

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

Užklausų eilutės, nurodytos parinktyje query, pakeis visas užklausos eilutės reikšmes, pateiktas užklausos URI.

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

read_timeout

Santrauka
Kintamoji, nusakanti laiko tarpą, kurį reikia naudoti skaitant srautinį kūną
Tipai
float
Numatytoji
Numatytoji reikšmė yra default_socket_timeout PHP ini nustatymas.
Nuolatinis
GuzzleHttp\RequestOptions::READ_TIMEOUT

Laiko limitas taikomas atskiroms srautinio kūno skaitymo operacijoms (kai įjungta srautas parinktis).

$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

Santrauka

Nurodykite, kur bus išsaugotas atsakymo tekstas.

Tipai
  • eilutė (kelias iki failo diske)
  • fopen() resursas
  • Psr\Http\Message\StreamInterface
Numatytoji

PHP laikinasis srautas

Nuolatinis

GuzzleHttp\RequestOptions::SINK

Perduokite eilutę, nurodančią kelią iki failo, kuriame bus saugomas atsakymo kūno turinys:

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

Perduokite iš fopen() grąžintą išteklių, kad atsakymą įrašytumėte į PHP srautą:

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

Perduokite Psr\Http\Message\StreamInterface objektą atsakymo kūnui transliuoti į atvirą PSR-7 srautą.

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

Pastaba

save_to užklausos parinktis buvo panaikinta ir pakeista į sink užklausos parinktį. Dabar save_to parinktis yra slapyvardis sink.

ssl_key

Santrauka

Nurodykite kelią iki failo, kuriame yra privatus SSL raktas PEM formatu. formatu. Jei reikalingas slaptažodis, tada nustatykite į masyvą, kuriame yra kelias į SSL raktą pirmajame masyvo elemente, o po jo - reikalaujamas slaptažodis antrajame elemente įrašytas slaptažodis

Tipai
  • eilutė
  • masyvas
Numatytoji

Nėra

Nuolatinis

GuzzleHttp\RequestOptions::SSL_KEY

Pastaba

ssl_key įgyvendina HTTP tvarkyklės. Šiuo metu tai yra tik palaikomas cURL tvarkyklės, bet gali būti palaikomas ir kitų trečiųjų šalių tvarkyklių. tvarkyklės.

srautas

Santrauka
Nustatyti į true, kad atsakymą būtų galima transliuoti, o ne atsisiųsti visą. iš anksto.
Tipai
bool
Numatytoji
false
Nuolatinis
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);
}

Pastaba

Srautinio atsakymo palaikymas turi būti įdiegtas HTTP tvarkyklėje, kurią naudoja klientas. Šią parinktį gali palaikyti ne kiekvienas HTTP tvarkytuvas, tačiau atsakymo objekto sąsaja išlieka tokia pati, nepriklausomai nuo to, ar ar tvarkyklė ją palaiko.

sinchroninis

Santrauka
Nustatykite true, kad praneštumėte HTTP tvarkyklėms, jog ketinate laukti atsakymą. Tai gali būti naudinga optimizuojant.
Tipai
bool
Numatytoji
nėra
Nuolatinis
GuzzleHttp\RequestOptions::SYNCHRONOUS

patikrinti

Santrauka

Apibūdina užklausos SSL sertifikato tikrinimo elgseną.

  • Nustatykite į true, kad įjungtumėte SSL sertifikato tikrinimą ir naudotumėte numatytąjį CA paketą, kurį pateikia operacinė sistema.
  • Nustatykite false, kad išjungtumėte sertifikato tikrinimą (tai nesaugu!)
  • Nustatykite į eilutę, kad pateiktumėte kelią į CA paketą, kad įjungtumėte tikrinimą naudojant pasirinktinį sertifikatą.
Tipai
  • bool
  • string
Numatytoji

true

Nuolatinis

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

Jei jums nereikia konkretaus sertifikatų rinkinio, "Mozilla" pateikia dažniausiai naudojamą CA paketą, kurį galima atsisiųsti čia (pateikė cURL prižiūrėtojas). Kai tik turėsite CA paketą galite nustatyti PHP ini nustatymą "openssl.cafile", kad jis rodytų kelią į failą ir galėsite nepateikti užklausos "patikrinti" parinkties. Daugiau informacijos apie SSL sertifikatus galima rasti cURL svetainėje.

timeout

Santrauka
Sklandusis dydis, apibūdinantis bendrą užklausos trukmę sekundėmis. Naudokite 0 jei norite laukti neribotą laiką (numatytoji elgsena).
Tipai
float
Numatytoji
0
Nuolatinis
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'

versija

Santrauka
Protokolo versija, kurią reikia naudoti su užklausa.
Tipai
string, float
Numatytoji
1.1
Nuolatinis
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);