Požiadavky vytvorené a prenesené klientom môžete prispôsobiť pomocou možností požiadaviek. Možnosti požiadavky riadia rôzne aspekty požiadavky vrátane hlavičiek, parametrov reťazca dopytu, nastavení časového limitu, tela požiadavky a mnoho ďalšieho.
Všetky nasledujúce príklady používajú nasledujúceho klienta:
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
Popisuje správanie presmerovania požiadavky
[
'max' => 5,
'strict' => false,
'referer' => false,
'protocols' => ['http', 'https'],
'track_redirects' => false
]
GuzzleHttp\RequestOptions::ALLOW_REDIRECTS
Nastavte na false
pre vypnutie presmerovania.
$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302
Nastavte na true
(predvolené nastavenie), aby ste povolili normálne presmerovania s maximálnym počtom 5 presmerovaní.
$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200
Môžete tiež odovzdať asociatívne pole obsahujúce nasledujúce dvojice kľúč - hodnota:
max: (int, predvolené=5) maximálny počet povolených presmerovaní.
strict: (bool, predvolené=false) Nastavte na true, ak chcete používať prísne presmerovania. Prísne presmerovania v súlade s RFC znamenajú, že požiadavky na presmerovanie POST sa posielajú ako POST požiadavky oproti tomu, čo robí väčšina prehliadačov, teda presmerovaniu POST požiadaviek s požiadavkami GET.
referer: (bool, predvolené=false) Nastavte na true, aby ste povolili pridanie odkazovača hlavičku pri presmerovaní.
protokoly: (pole, predvolené=['http', 'https']) Určuje, ktoré protokoly sú povolené pre požiadavky na presmerovanie.
on_redirect: (callable) Volanie PHP, ktoré sa vyvolá pri presmerovaní sa vyskytne presmerovanie. Táto volateľná príkazová položka sa vyvolá s pôvodnou požiadavkou a odpoveďou na presmerovanie, ktorá bola prijatá. Každá návratová hodnota z on_redirect sa ignoruje.
track_redirects: (bool) Ak je nastavené na true
, každý presmerovaný URI a stav
kód sa bude sledovať v X-Guzzle-Redirect-History
a
X-Guzzle-Redirect-Status-History
hlavičky. Všetky URI a
stavové kódy budú uložené v poradí, v akom sa vyskytli presmerovania.
Poznámka: Pri sledovaní presmerovaní bude X-Guzzle-Redirect-History
hlavička
vylúči URI pôvodnej požiadavky a X-Guzzle-Redirect-Status-History
hlavička vylúči konečný stavový kód.
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...
Upozornenie
Táto možnosť má účinok len vtedy, ak má vaša obslužná funkcia
GuzzleHttp\Middleware::redirect
middleware. Tento middleware sa pridáva
štandardne, keď je klient vytvorený bez obslužného programu, a pridáva sa
pri vytváraní obslužného programu pomocou GuzzleHttp\HandlerStack::create
.
Poznámka
Táto voľba nemá žiadny účinok pri zadávaní požiadaviek pomocou GuzzleHttp\Client::sendRequest()
. Aby sa zachoval súlad s PSR-18, každá odpoveď na presmerovanie sa vráti taká, aká je.
Odovzdanie poľa parametrov overovania HTTP, ktoré sa majú použiť s
požiadavku. Pole musí obsahovať používateľské meno v indexe [0], heslo v indexe
indexe [1] a voliteľne môžete poskytnúť zabudovaný typ overovania v
index [2]. Ak chcete vypnúť overovanie pre požiadavku, odovzdajte null
Žiadne
GuzzleHttp\RequestOptions::AUTH
Vstavané typy overovania sú tieto:
Authorization
(predvolené nastavenie sa používa, ak nie je zadaná žiadna
zadané).$client->request('GET', '/get', ['auth' => ['username', 'password']]);
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'digest']
]);
Poznámka
V súčasnosti je to podporované len pri použití obslužného programu cURL, ale vytvorenie náhrady, ktorú možno použiť s akýmkoľvek obslužným programom HTTP, je plánuje.
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'ntlm']
]);
Poznámka
V súčasnosti je to podporované len pri použití obslužného programu cURL.
Možnosť body
sa používa na kontrolu tela entity
(napr. PUT, POST, PATCH)
fopen()
zdrojPsr\Http\Message\StreamInterface
Žiadne
GuzzleHttp\RequestOptions::BODY
Toto nastavenie je možné nastaviť na niektorý z nasledujúcich typov:
reťazec
// Môžete odosielať požiadavky, ktoré používajú reťazec ako telo správy.
$client->request('PUT', '/put', ['body' => 'foo']);
zdroj vrátený z fopen()
// Môžete posielať požiadavky, ktoré ako telo používajú prúdový zdroj.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
$client->request('PUT', '/put', ['body' => $resource]);
Psr\Http\Message\StreamInterface
// Môžete posielať požiadavky, ktoré používajú objekt Guzzle stream ako telo
$stream = GuzzleHttp\Psr7\Utils::streamFor('contents...');
$client->request('POST', '/post', ['body' => $stream]);
Poznámka
Túto možnosť nemožno použiť s form_params
, multipart
alebo json
Nastaviť na reťazec na zadanie cesty k súboru obsahujúcemu PEM vo formáte certifikátu na strane klienta. Ak sa vyžaduje heslo, potom nastavte na pole obsahujúce cestu k súboru PEM v prvom prvku poľa nasledované heslom požadovaným pre certifikát v druhom poli
Žiadne
GuzzleHttp\RequestOptions::CERT
$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);
GuzzleHttp\Cookie\CookieJarInterface
GuzzleHttp\RequestOptions::COOKIES
Musíte zadať možnosť cookies ako GuzzleHttp\Cookie\CookieJarInterface
alebo false
.
$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);
Upozornenie
Táto možnosť má účinok len vtedy, ak má vaša obslužná funkcia
GuzzleHttp\Middleware::cookies
middleware. Tento middleware sa pridáva
predvolene, keď je klient vytvorený bez obslužného programu, a je pridaný
pri vytváraní obslužného programu pomocou GuzzleHttp\default_handler
.
Tip
Pri vytváraní klienta môžete nastaviť predvolenú možnosť cookie na true
aby sa použila zdieľaná relácia súborov cookie spojená s klientom.
0
pre čakanie na neurčito (predvolené správanie).0
GuzzleHttp\RequestOptions::CONNECT_TIMEOUT
// Timeout if the client fails to connect to the server in 3.14 seconds.
$client->request('GET', '/delay/5', ['connect_timeout' => 3.14]);
Poznámka
Toto nastavenie musí byť podporované obslužným programom HTTP použitým na odoslanie požiadavky.
connect_timeout
je v súčasnosti podporované len vstavaným cURL
handler.
Nastaviť na true
alebo nastaviť na prúd PHP vrátený pomocou fopen()
na
umožniť výstup ladenia s obslužným programom použitým na odoslanie požiadavky. Napríklad,
pri používaní cURL na prenos požiadaviek, verbose cURL CURLOPT_VERBOSE
bude vypúšťané. Pri použití obalu prúdu PHP, obalu prúdu
sa budú vysielať oznámenia. Ak je nastavená hodnota true, výstup sa zapíše do
PHP STDOUT. Ak je zadaný prúd PHP, výstup sa zapíše do tohto prúdu.
fopen()
zdrojŽiadne
GuzzleHttp\RequestOptions::DEBUG
$client->request('GET', '/get', ['debug' => true]);
Spustenie vyššie uvedeného príkladu by prinieslo nasledujúci výsledok:
* 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
Určite, či Content-Encoding
odpovede (gzip,
deflate atď.) automaticky dekódované.
true
GuzzleHttp\RequestOptions::DECODE_CONTENT
Túto možnosť možno použiť na riadenie spôsobu, akým sú telá odpovedí s kódovaným obsahom
spracované. V predvolenom nastavení je decode_content
nastavená na hodnotu true, čo znamená, že všetky gzipované
alebo deflovanú odpoveď Guzzle dekóduje.
Ak je nastavená na false
, telo odpovede sa nikdy nedekóduje, čo znamená, že bajty prejdú obslužným programom bez zmeny.
// Request gzipped data, but do not decode it while downloading
$client->request('GET', '/foo.js', [
'headers' => ['Accept-Encoding' => 'gzip'],
'decode_content' => false
]);
Ak je nastavená na reťazec, bajty odpovede sa dekódujú a hodnota reťazca
poskytnutá možnosti decode_content
sa odovzdá ako Accept-Encoding
.
hlavička požiadavky.
// Pass "gzip" as the Accept-Encoding header.
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);
Počet milisekúnd oneskorenia pred odoslaním požiadavky
null
GuzzleHttp\RequestOptions::DELAY
Ovláda správanie hlavičky "Expect: 100-Continue"
1048576
GuzzleHttp\RequestOptions::EXPECT
Nastavte na true
, aby ste povolili hlavičku "Expect: 100-Continue" pre všetky požiadavky
ktoré odosielajú telo. Nastavte na false
, aby ste zakázali hlavičku "Expect: 100-Continue".
hlavičku pre všetky požiadavky. Nastavte na číslo, aby veľkosť užitočného zaťaženia musela
byť väčšia ako toto číslo, aby sa odoslala hlavička Expect. Nastavenie na a
sa odošle hlavička Expect pre všetky požiadavky, v ktorých je veľkosť
sa nedá určiť alebo ak telo nie je možné pretáčať.
V predvolenom nastavení Guzzle pridá hlavičku "Expect: 100-Continue", keď je veľkosť tela požiadavky väčšia ako 1 MB a požiadavka používa protokol HTTP/1.1.
Poznámka
Táto možnosť sa uplatní len pri použití protokolu HTTP/1.1. HTTP/1.0 a HTTP/2.0 nepodporujú hlavičku "Expect: 100-Continue". Podpora spracovania pracovného postupu "Expect: 100-Continue" musí byť implementovať v obslužných programoch HTTP Guzzle, ktoré používa klient.
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']);
Poznámka
Toto nastavenie musí byť podporované obslužným programom HTTP použitým na odoslanie požiadavky.
force_ip_resolve
je v súčasnosti podporované len vstavaným cURL
a obslužnými programami stream.
GuzzleHttp\RequestOptions::FORM_PARAMS
Asociatívne pole názvov polí formulára k hodnotám, kde každá hodnota je reťazec alebo pole reťazcov. Nastaví hlavičku Content-Type na application/x-www-form-urlencoded, ak sa už nenachádza žiadna hlavička Content-Type prítomná.
$client->request('POST', '/post', [
'form_params' => [
'foo' => 'bar',
'baz' => ['hi', 'there!']
]
]);
Poznámka
form_params
nemožno použiť s možnosťou multipart
. Budete musieť použiť
jednu alebo druhú možnosť. Použite form_params
pre application/x-www-form-urlencoded
a multipart
pre multipart/form-data
požiadavky.
Túto možnosť nemožno použiť s body
, multipart
alebo json
GuzzleHttp\RequestOptions::HEADERS
// Set various headers on a request
$client->request('GET', '/get', [
'headers' => [
'User-Agent' => 'testing/1.0',
'Accept' => 'application/json',
'X-Foo' => ['Bar', 'Baz']
]
]);
Hlavičky možno pridať ako predvolené možnosti pri vytváraní klienta. Keď hlavičky
sú použité ako predvolené možnosti, použijú sa len vtedy, ak vytváraná požiadavka
ešte neobsahuje konkrétnu hlavičku. To sa týka aj požiadaviek, ktoré boli odovzdané
klientovi v metódach send()
a sendAsync()
, a požiadavky
vytvorené klientom (napr. metódy request()
a requestAsync()
).
$client = new GuzzleHttp\Client(['headers' => ['X-Foo' => 'Bar']]);
// Will send a request with the X-Foo header.
$client->request('GET', '/get');
// Sets the X-Foo header to "test", which prevents the default header
// from being applied.
$client->request('GET', '/get', ['headers' => ['X-Foo' => 'test']]);
// Will disable adding in default headers.
$client->request('GET', '/get', ['headers' => null]);
// Will not overwrite the X-Foo header because it is in the message.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request);
// Will overwrite the X-Foo header with the request option provided in the
// send method.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request, ['headers' => ['X-Foo' => 'overwrite']]);
false
, aby ste zakázali vyhadzovanie výnimiek na protokole HTTP
(t. j. odpovede 4xx a 5xx). Výnimky sa štandardne vyhadzujú, keď
sa vyskytnú chyby protokolu HTTP.true
GuzzleHttp\RequestOptions::HTTP_ERRORS
$client->request('GET', '/status/500');
// Throws a GuzzleHttp\Exception\ServerException
$res = $client->request('GET', '/status/500', ['http_errors' => false]);
echo $res->getStatusCode();
// 500
Upozornenie
Táto možnosť má účinok len vtedy, ak má vaša obslužná funkcia
GuzzleHttp\Middleware::httpErrors
middleware. Tento middleware sa pridáva
predvolene, keď je klient vytvorený bez obslužného programu, a je pridaný
predvolene pri vytváraní obslužného programu pomocou GuzzleHttp\default_handler
.
Podpora internacionalizovaných názvov domén (IDN) (predvolene povolené, ak
intl
je k dispozícii rozšírenie)
true
ak je k dispozícii intl
rozšírenie (a knižnica ICU je 4.6+ pre PHP 7.2+), false
inak
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
Zapína/vypína podporu IDN, môže sa použiť aj na presné ovládanie kombináciou
IDNA_* konštanty (okrem IDNA_ERROR_*), pozri $options
parameter v
idn_to_ascii()
v dokumentácii, kde nájdete ďalšie podrobnosti.
json
sa používa na jednoduché nahrávanie údajov v kódovaní JSON ako
tela požiadavky. V hlavičke Content-Type application/json
bude
pridá, ak sa v správe už nenachádza žiadna hlavička Content-Type.json_encode()
.GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);
Tu je príklad použitia tap
middleware na zistenie, aká požiadavka sa posiela po drôte.
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)
]);
Poznámka
Táto možnosť požiadavky nepodporuje prispôsobenie hlavičky Content-Type
ani žiadnu z možností funkcie json_encode() jazyka PHP.
funkcie. Ak potrebujete tieto nastavenia prispôsobiť, musíte odovzdať
JSON zakódované údaje do požiadavky sami pomocou body
požiadavky
a musíte zadať správnu hlavičku Content-Type pomocou
headers
možnosť požiadavky.
Túto možnosť nemožno použiť s body
, form_params
alebo multipart
GuzzleHttp\RequestOptions::MULTIPART
Hodnota multipart
je pole asociatívnych polí, z ktorých každé obsahuje nasledujúce dvojice kľúč hodnota:
name
: (reťazec, povinné) názov poľa formuláraobsah
: (StreamInterface/resource/string, povinné) Údaje, ktoré sa majú použiť v
prvku formulára.hlavičky
: (pole) Voliteľné asociatívne pole vlastných hlavičiek, ktoré sa majú použiť s
prvkom formulára.názov súboru
: (reťazec) Nepovinný reťazec, ktorý sa má poslať ako názov súboru v časti.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'
],
]
]);
Poznámka
multipart
nemožno použiť s možnosťou form_params
. Budete musieť
použiť jednu alebo druhú možnosť. Použite form_params
pre application/x-www-form-urlencoded
a multipart
pre multipart/form-data
požiadavky.
Túto možnosť nemožno použiť s body
, form_params
alebo json
Calllable, ktorý sa vyvolá, keď hlavičky HTTP odpovede majú ale telo sa ešte nezačalo sťahovať.
GuzzleHttp\RequestOptions::ON_HEADERS
Volateľný súbor prijíma objekt Psr\Http\Message\ResponseInterface
. Ak sa vyskytne výnimka
je vyhodená volateľným objektom, potom sa sľub spojený s odpoveďou
odmietne s GuzzleHttp\Exception\RequestException
, ktorý zabalí
výnimku, ktorá bola vyhodená.
Možno budete potrebovať vedieť, aké hlavičky a stavové kódy boli prijaté pred tým, ako sa údaje zapíšu do drezu.
// 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!');
}
}
]);
Poznámka
Pri písaní obslužných programov HTTP sa musí zavolať funkcia on_headers
pred zápisom údajov do tela odpovede.
on_stats
umožňuje získať prístup k štatistike prenosu
žiadosti a prístup k podrobnostiam o prenose na nižšej úrovni spracovateľa
spojeného s vaším klientom. on_stats
je volateľný príkaz, ktorý sa vyvoláva
keď obslužný program ukončí odosielanie požiadavky. Spätné volanie je vyvolané
so štatistikami prenosu o požiadavke, prijatej odpovedi alebo
vzniknutej chybe. V údajoch je zahrnutý celkový čas potrebný na
na odoslanie požiadavky.
GuzzleHttp\RequestOptions::ON_STATS
Volateľný súbor prijíma objekt 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());
}
}
]);
Definuje funkciu, ktorá sa vyvolá, keď sa dosiahne pokrok v prenose.
Žiadne
GuzzleHttp\RequestOptions::PROGRESS
Funkcia prijíma nasledujúce pozičné argumenty:
// Send a GET request to /get?foo=bar
$result = $client->request(
'GET',
'/',
[
'progress' => function(
$downloadTotal,
$downloadedBytes,
$uploadTotal,
$uploadedBytes
) {
//do something
},
]
);
Odovzdajte reťazec na zadanie proxy servera HTTP alebo pole na zadanie rôznych proxy serverov pre rôzne protokoly.
Žiadne
GuzzleHttp\RequestOptions::PROXY
Odovzdanie reťazca na zadanie proxy servera pre všetky protokoly.
$client->request('GET', '/', ['proxy' => 'http://localhost:8125']);
Odovzdanie asociatívneho poľa na zadanie proxy serverov HTTP pre konkrétne schémy URI
(t. j. "http", "https"). Poskytnite no
dvojicu kľúč-hodnota na poskytnutie zoznamu
názvov hostiteľov, na ktoré by sa nemalo proximovať.
Poznámka
Guzzle túto hodnotu automaticky doplní hodnotou vášho prostredia
NO_PROXY
premennou prostredia. Avšak pri poskytnutí proxy
je na vás, aby ste poskytli hodnotu no
analyzovanú z
NO_PROXY
premennej prostredia
(napr. 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
]
]);
Poznámka
Môžete poskytnúť adresy URL proxy servera, ktoré obsahujú schému, používateľské meno a heslo.
Napríklad "http://username:[email protected]:10"
.
Asociatívne pole hodnôt reťazca dopytu alebo reťazec dopytu, ktorý sa má pridať požiadavku.
Žiadne
GuzzleHttp\RequestOptions::QUERY
// Send a GET request to /get?foo=bar
$client->request('GET', '/get', ['query' => ['foo' => 'bar']]);
Reťazce dotazov zadané v možnosti
// Send a GET request to /get?foo=bar
$client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);
default_socket_timeout
PHP ini nastaveniaGuzzleHttp\RequestOptions::READ_TIMEOUT
Časový limit sa vzťahuje na jednotlivé operácie čítania na streamovanom tele (keď je povolená možnosť 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());
Určite, kam sa uloží telo odpovede.
fopen()
zdrojPsr\Http\Message\StreamInterface
PHP temp stream
GuzzleHttp\RequestOptions::SINK
Odovzdanie reťazca na zadanie cesty k súboru, do ktorého sa uloží obsah tela odpovede:
$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);
Odovzdanie prostriedku vráteného z fopen()
na zápis odpovede do prúdu PHP:
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$client->request('GET', '/stream/20', ['sink' => $resource]);
Odovzdanie objektu Psr\Http\Message\StreamInterface
na prenos tela odpovede do otvoreného prúdu 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]);
Poznámka
Možnosť save_to
požiadavky bola zrušená v prospech možnosti
sink
možnosť požiadavky. Poskytovanie možnosti save_to
je teraz alias
sink
.
Zadajte cestu k súboru, ktorý obsahuje súkromný kľúč SSL vo formáte PEM vo formáte PEM. Ak sa vyžaduje heslo, potom nastavte na pole obsahujúce cestu ku kľúču SSL v prvom prvku poľa, za ktorým nasleduje požadované heslo pre certifikát v druhom prvku.
Žiadne
GuzzleHttp\RequestOptions::SSL_KEY
Poznámka
ssl_key
je implementovaný obslužnými programami HTTP. V súčasnosti je to len
obsluha cURL, ale môže byť podporovaná aj inými obsluhami tretích strán.
handlery.
true
, aby sa odpoveď streamovala a nie sťahovala celá
vopred.false
GuzzleHttp\RequestOptions::STREAM
$response = $client->request('GET', '/stream/20', ['stream' => true]);
// Read bytes off of the stream until the end of the stream is reached
$body = $response->getBody();
while (!$body->eof()) {
echo $body->read(1024);
}
Poznámka
Podpora prúdových odpovedí musí byť implementovaná v obslužnom programe HTTP, ktorý používa klient. Túto možnosť nemusí podporovať každý obslužný program HTTP, ale rozhranie objektu odpovede zostáva rovnaké bez ohľadu na to, či ho obslužný program podporuje, alebo nie.
GuzzleHttp\RequestOptions::SYNCHRONOUS
Popisuje správanie overenia SSL certifikátu pri požiadavke.
true
, ak chcete zapnúť overovanie certifikátu SSL a použiť predvolené
CA zväzok poskytovaný operačným systémom.false
, ak chcete vypnúť overovanie certifikátov (je to nezabezpečené!)true
GuzzleHttp\RequestOptions::VERIFY
// Use the system's CA bundle (this is the default setting)
$client->request('GET', '/', ['verify' => true]);
// Use a custom SSL certificate on disk.
$client->request('GET', '/', ['verify' => '/path/to/cert.pem']);
// Disable validation entirely (don't do this!).
$client->request('GET', '/', ['verify' => false]);
Ak nepotrebujete konkrétny zväzok certifikátov, Mozilla poskytuje bežne používaný balík certifikačných autorít, ktorý si môžete stiahnuť tu (poskytuje ho správca cURL). Keď máte k dispozícii zväzok CA na disku, môžete nastaviť nastavenie PHP ini "openssl.cafile" tak, aby ukazovalo na cestu k súboru, čo vám umožní vynechať možnosť požiadavky "overiť". Oveľa podrobnejšie informácie o SSL certifikáty nájdete na stránke webovej stránke cURL.
0
ak chcete čakať neobmedzene dlho (predvolené správanie).0
GuzzleHttp\RequestOptions::TIMEOUT
// Timeout if a server does not return a response in 3.14 seconds.
$client->request('GET', '/delay/5', ['timeout' => 3.14]);
// PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\TransferException'
1.1
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);