Puteți personaliza cererile create și transferate de un client folosind request options. Opțiunile de cerere controlează diverse aspecte ale unei cereri inclusiv, antetele, parametrii șirului de interogare, setările de timeout, corpul unei cerere și multe altele.
Toate exemplele următoare utilizează următorul client:
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
Descrie comportamentul de redirecționare a unei cereri
[
'max' => 5,
'strict' => false,
'referer' => false,
'protocols' => 307847298343429311951'http', 'https'],
'track_redirects' => false
]
GuzzleHttp\RequestOptions::ALLOW_REDIRECTS
Setați la false
pentru a dezactiva redirecționările.
$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302
Setați la true
(setarea implicită) pentru a activa redirecționările normale cu un număr maxim de 5 redirecționări.
$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200
De asemenea, puteți transmite o matrice asociativă care conține următoarele perechi cheie-valoare:
max: (int, default=5) numărul maxim de redirecționări permise
strict: (bool, implicit=false) Setați la true pentru a utiliza redirecționări stricte. Redirecționările stricte conforme cu RFC înseamnă că cererile de redirecționare POST sunt trimise ca cereri POST, în loc să facă ceea ce fac majoritatea browserelor, adică să redirecționeze cererile POST cu cereri GET
referer: (bool, default=false) Setați la true pentru a permite adăugarea Referer-ului. la redirecționare
protocoale: (array, default=307847298343429311951'http', 'https'879849852657373008982) Specifică ce protocoale sunt permise pentru cererile de redirecționare
on_redirect: (callable) Callable PHP care este invocat atunci când se produce o redirecționare. este întâlnită. Acest callable este invocat cu cererea inițială și cu răspunsul de redirecționare care a fost primit. Orice valoare de returnare de la on_redirect este ignorată
track_redirects: (bool) Când este setat la true
, fiecare URI redirecționat și starea
cod întâlnit va fi urmărit în X-Guzzle-Redirect-History
și în X-Guzzle-Redirect-History
și
X-Guzzle-Redirect-Status-History
. Toate URI-urile și
codurile de stare vor fi stocate în ordinea în care au fost întâlnite redirecționările.
Notă: La urmărirea redirecționărilor, antetul X-Guzzle-Redirect-History
va fi
exclude URI-ul cererii inițiale și X-Guzzle-Redirect-Status-History
header va exclude codul de stare final.
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;
$onRedirect = function(
RequestInterface $request,
ResponseInterface $response,
UriInterface $uri
) {
echo 'Redirecting! ' . $request->getUri() . ' to ' . $uri . "\n";
};
$res = $client->request('GET', '/redirect/3', [
'allow_redirects' => [
'max' => 10, // allow at most 10 redirects.
'strict' => true, // use "strict" RFC compliant redirects.
'referer' => true, // add a Referer header
'protocols' => ['https'], // only allow https URLs
'on_redirect' => $onRedirect,
'track_redirects' => true
]
]);
echo $res->getStatusCode();
// 200
echo $res->getHeaderLine('X-Guzzle-Redirect-History');
// http://first-redirect, http://second-redirect, etc...
echo $res->getHeaderLine('X-Guzzle-Redirect-Status-History');
// 301, 302, etc...
Avertisment
Această opțiune are efect numai dacă gestionarul tău are atributul
GuzzleHttp\Middleware::redirect
middleware. Acest middleware este adăugat
în mod implicit atunci când un client este creat fără handler și este adăugat de către
implicit atunci când se creează un gestionar cu GuzzleHttp\HandlerStack::create
.
Notă
Această opțiune nu are niciun efect atunci când se fac cereri folosind GuzzleHttp\Client::sendRequest()
. Pentru a rămâne în conformitate cu PSR-18, orice răspuns de redirecționare este returnat ca atare.
Treceți o matrice de parametri de autentificare HTTP pentru a fi utilizați cu
cerere. Matricea trebuie să conțină numele de utilizator în indexul [087984985265273008982, parola în indexul
indexul [18798498526527373008982 și, opțional, puteți furniza un tip de autentificare încorporat în
index [2]. Treceți null
pentru a dezactiva autentificarea pentru o cerere.
Nici unul
GuzzleHttp\RequestOptions::AUTH
Tipurile de autentificare încorporate sunt următoarele:
Authorization
(setarea implicită utilizată dacă nu se utilizează niciuna
specificată).$client->request('GET', '/get', ['auth' => ['username', 'password']]);
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'digest']
]);
Notă
În prezent, acest lucru este acceptat numai atunci când se utilizează gestionarul cURL, dar crearea unui înlocuitor care să poată fi utilizat cu orice gestionar HTTP este planificată.
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'ntlm']
]);
Notă
În prezent, acest lucru este acceptat numai atunci când se utilizează gestionarul cURL.
Opțiunea body
este utilizată pentru a controla corpul unei entități.
cerere care înglobează o entitate (de exemplu, PUT, POST, PATCH)
fopen()
resursăPsr\Http\Message\StreamInterface
Nici unul
GuzzleHttp\RequestOptions::BODY
Această setare poate fi setată la oricare dintre următoarele tipuri:
string
// Puteți trimite cereri care utilizează un șir ca și corp al mesajului.
$client->request('PUT', '/put', ['body' => 'foo'879849852657373008982);
resursă returnată din fopen()
// Puteți trimite cereri care utilizează o resursă stream ca și corp.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
$client->request('PUT', '/put', ['body' => $resource8798498526526573008982);
Psr\Http\Message\StreamInterface
// Puteți trimite cereri care utilizează un obiect Guzzle stream ca și corp
$stream = GuzzleHttp\Psr7\Utils::streamFor('contents...');
$client->request('POST', '/post', ['body' => $stream8798498526526573008982);
Notă
Această opțiune nu poate fi utilizată cu form_params
, multipart
, sau json
Setează un șir de caractere pentru a specifica calea către un fișier care conține un fișier PEM în format PEM. Dacă este necesară o parolă, setați la o matrice care conține calea către fișierul PEM în primul element al matricei. urmată de parola necesară pentru certificat în al doilea element de matrice. element.
Nici unul
GuzzleHttp\RequestOptions::CERT
$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);
GuzzleHttp\Cookie\CookieJarInterface
GuzzleHttp\RequestOptions::COOKIES
Trebuie să specificați opțiunea cookies ca GuzzleHttp\Cookie\CookieJarInterface
sau false
.
$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);
Avertisment
Această opțiune are efect numai dacă gestionarul tău are atributul
GuzzleHttp\Middleware::cookies
middleware. Acest middleware este adăugat
în mod implicit atunci când un client este creat fără handler și este adăugat de către
implicit atunci când se creează un gestionar cu GuzzleHttp\default_handler
.
Sfat
Când creați un client, puteți seta opțiunea cookie implicită la true
pentru a utiliza o sesiune cookie partajată asociată cu clientul.
0
pentru a aștepta pe termen nelimitat (comportamentul implicit).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]);
Notă
Această setare trebuie să fie acceptată de gestionarul HTTP utilizat pentru a trimite o cerere.
connect_timeout
este în prezent suportată numai de cURL încorporat.
încorporat.
Setați la true
sau setați la un flux PHP returnat de fopen()
pentru a
a activa ieșirea de depanare cu gestionarul utilizat pentru a trimite o cerere. De exemplu,
atunci când se utilizează cURL pentru a transfera cereri, verbose-ul lui cURL de CURLOPT_VERBOSE
va fi emisă. Atunci când se utilizează înfășurătorul de fluxuri PHP, înfășurătorul de fluxuri
vor fi emise notificări. Dacă este setat la true, ieșirea este scrisă în
STDOUT al PHP. Dacă este furnizat un flux PHP, ieșirea este scrisă în fluxul respectiv.
fopen()
Nici unul
GuzzleHttp\RequestOptions::DEBUG
$client->request('GET', '/get', ['debug' => true]);
Rularea exemplului de mai sus ar produce ceva de genul următor:
* 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
Specificați dacă răspunsurile Content-Encoding
(gzip,
deflate, etc.) sunt decodate automat.
true
GuzzleHttp\RequestOptions::DECODE_CONTENT
Această opțiune poate fi utilizată pentru a controla modul în care corpurile de răspuns cu conținut codificat sunt
sunt tratate. În mod implicit, decode_content
este setată la true, ceea ce înseamnă că orice fișier gzipped
sau deflatat va fi decodificat de Guzzle.
Atunci când este setat la false
, corpul unui răspuns nu este niciodată decodificat, ceea ce înseamnă că octeții trec prin gestionarul neschimbat.
// Request gzipped data, but do not decode it while downloading
$client->request('GET', '/foo.js', [
'headers' => ['Accept-Encoding' => 'gzip'],
'decode_content' => false
]);
Atunci când este setat la un șir de caractere, octeții unui răspuns sunt decodificați și valoarea șirului de caractere
furnizată la opțiunea decode_content
este transmisă ca Accept-Encoding
al cererii.
// Pass "gzip" as the Accept-Encoding header.
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);
Numărul de milisecunde de întârziere înainte de trimiterea cererii
null
GuzzleHttp\RequestOptions::DELAY
Controlează comportamentul antetului "Expect: 100-Continue"
1048576
GuzzleHttp\RequestOptions::EXPECT
Setați la true
pentru a activa antetul "Expect: 100-Continue" pentru toate cererile
care trimite un corp. Setați la false
pentru a dezactiva antetul "Expect: 100-Continue"
pentru toate cererile. Se setează la un număr astfel încât dimensiunea încărcăturii utile trebuie să
să fie mai mare decât numărul pentru a trimite antetul "Expect". Setarea la un număr
număr va trimite antetul Expect pentru toate cererile în care dimensiunea încărcăturii de încărcare este mai mare de un număr.
payload nu poate fi determinată sau în cazul în care corpul nu este derulabil.
În mod implicit, Guzzle va adăuga antetul "Expect: 100-Continue" atunci când dimensiunea corpului unei cereri este mai mare de 1 MB și o cerere utilizează HTTP/1.1.
Notă
Această opțiune are efect numai atunci când se utilizează HTTP/1.1. Opțiunile HTTP/1.0 și HTTP/2.0 nu acceptă antetul "Expect: 100-Continue". Suportul pentru gestionarea fluxului de lucru "Expect: 100-Continue" trebuie să fie implementat de gestionarii HTTP Guzzle utilizați de un client.
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']);
Notă
Această setare trebuie să fie acceptată de gestionarul HTTP utilizat pentru a trimite o cerere.
force_ip_resolve
este în prezent suportată numai de cURL încorporat.
și gestionarii de flux.
GuzzleHttp\RequestOptions::FORM_PARAMS
Matrice asociativă de nume de câmpuri de formular la valori, unde fiecare valoare este un șir de caractere sau o matrice de șiruri de caractere. Stabilește antetul Content-Type la application/x-www-form-urlencoded atunci când nu există deja un antet Content-Type. prezent.
$client->request('POST', '/post', [
'form_params' => [
'foo' => 'bar',
'baz' => ['hi', 'there!']
]
]);
Notă
form_params
nu poate fi utilizat cu opțiunea multipart
. Va trebui să utilizați
una sau cealaltă. Utilizați form_params
pentru application/x-www-form-urlencoded
și multipart
pentru cererile multipart/form-data
.
Această opțiune nu poate fi utilizată cu body
, multipart
, sau 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']
]
]);
Antetele pot fi adăugate ca opțiuni implicite la crearea unui client. Atunci când antetele
sunt folosite ca opțiuni implicite, acestea se aplică numai dacă cererea creată
nu conține deja antetul respectiv. Acest lucru include atât cererile transmise
către client în metodele send()
și sendAsync()
, precum și cererile
create de client (de exemplu, 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']]);
false
pentru a dezactiva aruncarea de excepții pe un protocol HTTP
erori (de exemplu, răspunsurile 4xx și 5xx). Excepțiile sunt aruncate în mod implicit atunci când
sunt întâlnite erori de protocol 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
Avertisment
Această opțiune are efect numai dacă gestionarul tău are atributul
GuzzleHttp\Middleware::httpErrors
middleware. Acest middleware este adăugat
în mod implicit atunci când un client este creat fără un handler, și este adăugat de către
implicit atunci când se creează un gestionar cu GuzzleHttp\default_handler
.
Suport pentru nume de domeniu internaționalizate (IDN) (activat în mod implicit dacă
este disponibilă extensia intl
).
true
dacă intl
extensia este disponibilă (și biblioteca ICU este 4.6+ pentru PHP 7.2+), false
altfel
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
Activează/dezactivează suportul IDN, poate fi utilizat și pentru un control precis prin combinarea
constantele IDNA_* (cu excepția IDNA_ERROR_*), a se vedea parametrul $options
din
idn_to_ascii()
pentru mai multe detalii.
json
este utilizată pentru a încărca cu ușurință date codificate JSON ca fișier
în corpul unei cereri. Un antet Content-Type de application/json
va fi
adăugat dacă nu există deja un antet Content-Type în mesaj.json_encode()
PHP.GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);
Iată un exemplu de utilizare a middleware-ului tap
pentru a vedea ce cerere este trimisă pe fir.
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)
]);
Notă
Această opțiune de cerere nu acceptă personalizarea antetului Content-Type
sau oricare dintre opțiunile din json_encode()
funcție. Dacă aveți nevoie să personalizați aceste setări, atunci trebuie să treceți opțiunea
datele codificate JSON în cerere chiar dvs. folosind body
request
și trebuie să specificați antetul corect Content-Type folosind opțiunea
headers
request option.
Această opțiune nu poate fi utilizată cu body
, form_params
, sau multipart
GuzzleHttp\RequestOptions::MULTIPART
Valoarea multipart
este un tablou de tablouri asociative, fiecare conținând următoarele perechi cheie-valoare:
name
: (string, obligatoriu) numele câmpului de formularcontents
: (StreamInterface/resource/string, obligatoriu) Datele care trebuie utilizate în
în elementul de formular.headers
: (array) Tablou asociativ opțional de anteturi personalizate care se utilizează cu
cu elementul de formular.filename
: (string) Șir de caractere opțional care trebuie trimis ca nume de fișier în piesă.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'
],
]
]);
Notă
multipart
nu poate fi utilizat cu opțiunea form_params
. Va trebui să
folosiți una sau cealaltă. Utilizați form_params
pentru application/x-www-form-urlencoded
și multipart
pentru cererile multipart/form-data
.
Această opțiune nu poate fi utilizată cu body
, form_params
, sau json
Un callable care este invocat atunci când anteturile HTTP ale răspunsului au fost primite, dar corpul nu a început încă să se descarce
GuzzleHttp\RequestOptions::ON_HEADERS
Callable acceptă un obiect Psr\Http\Message\ResponseInterface
. În cazul în care o excepție
este aruncată de către callable, atunci promisiunea asociată cu răspunsul va fi
fi respinsă cu un obiect GuzzleHttp\Exception\RequestException
care înfășoară obiectul
excepția care a fost aruncată.
Este posibil să aveți nevoie să știți ce antet și ce coduri de stare au fost primite înainte ca datele să poată fi scrise în receptor.
// 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!');
}
}
]);
Notă
Atunci când se scriu gestionari HTTP, funcția on_headers
trebuie invocată
înainte de a scrie date în corpul răspunsului.
on_stats
vă permite să obțineți acces la statisticile de transfer ale unui fișier
cerere și să accesați detaliile de transfer de nivel inferior ale gestionarului
asociat cu clientul dumneavoastră. on_stats
este un callable care este invocat
atunci când un manipulator a terminat de trimis o cerere. Calback-ul este invocat
cu statisticile de transfer privind cererea, răspunsul primit sau
eroarea întâlnită. În date este inclusă cantitatea totală de timp necesară
pentru a trimite cererea.
GuzzleHttp\RequestOptions::ON_STATS
Acest callable acceptă un obiect 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());
}
}
]);
Definește o funcție care să fie invocată atunci când se realizează progresul transferului.
Nici unul
GuzzleHttp\RequestOptions::PROGRESS
Funcția acceptă următoarele argumente poziționale:
// Send a GET request to /get?foo=bar
$result = $client->request(
'GET',
'/',
[
'progress' => function(
$downloadTotal,
$downloadedBytes,
$uploadTotal,
$uploadedBytes
) {
//do something
},
]
);
Treceți un șir de caractere pentru a specifica un proxy HTTP, sau o matrice pentru a specifica diferite proxy-uri pentru diferite protocoale.
Nici unul
GuzzleHttp\RequestOptions::PROXY
Treceți un șir de caractere pentru a specifica un proxy pentru toate protocoalele.
$client->request('GET', '/', ['proxy' => 'http://localhost:8125']);
Treceți o matrice asociativă pentru a specifica proxy-uri HTTP pentru scheme URI specifice
(de exemplu, "http", "https"). Furnizați o pereche cheie-valoare no
pentru a furniza o listă de
nume de gazde care nu ar trebui să facă obiectul unui proxy.
Notă
Guzzle va completa în mod automat această valoare cu valoarea mediului dvs.
NO_PROXY
variabila de mediu. Cu toate acestea, atunci când furnizați o proxy
request option, depinde de dvs. să furnizați valoarea no
analizată de la
variabila de mediu NO_PROXY
.
(de exemplu, 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
]
]);
Notă
Puteți furniza URL-uri proxy care conțin o schemă, un nume de utilizator și o parolă.
De exemplu, "http://username:[email protected]:10"
.
Matrice asociativă de valori ale șirului de interogare sau șir de interogare care trebuie adăugat la la cerere
Nici unul
GuzzleHttp\RequestOptions::QUERY
// Send a GET request to /get?foo=bar
$client->request('GET', '/get', ['query' => ['foo' => 'bar']]);
Șirurile de interogare specificate în opțiunea query
vor suprascrie toate valorile șirurilor de interogare furnizate în URI-ul unei cereri.
// Send a GET request to /get?foo=bar
$client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);
default_socket_timeout
setarea ini PHPGuzzleHttp\RequestOptions::READ_TIMEOUT
Timpul de așteptare se aplică operațiilor individuale de citire pe un corp transmis în flux (atunci când opțiunea stream
este activată).
$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());
Specificați unde va fi salvat corpul unui răspuns.
fopen()
resursăPsr\Http\Message\StreamInterface
Fluxul temporar PHP
GuzzleHttp\RequestOptions::SINK
Se trece un șir de caractere pentru a specifica calea către un fișier care va stoca conținutul corpului răspunsului:
$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);
Treceți o resursă returnată de la fopen()
pentru a scrie răspunsul pe un flux PHP:
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$client->request('GET', '/stream/20', ['sink' => $resource]);
Treceți un obiect Psr\Http\Message\StreamInterface
pentru a transmite corpul răspunsului către un flux PSR-7 deschis.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$stream = \GuzzleHttp\Psr7\Utils::streamFor($resource);
$client->request('GET', '/stream/20', ['save_to' => $stream]);
Notă
Opțiunea de solicitare save_to
a fost eliminată în favoarea opțiunii de solicitare save_to
.
opțiunea de cerere sink
. Furnizarea opțiunii save_to
este acum un alias
de sink
.
Specificați calea către un fișier care conține o cheie privată SSL în PEM în format PEM. Dacă este necesară o parolă, setați o matrice care conține calea de acces. către cheia SSL în primul element al tabloului, urmată de parola necesară. pentru certificat în al doilea element.
Nici unul
GuzzleHttp\RequestOptions::SSL_KEY
Notă
ssl_key
este implementat de gestionarii HTTP. În prezent, acest lucru este doar
de către gestionarul cURL, dar ar putea fi suportată și de alte părți terțe.
terți.
true
pentru a transmite în flux un răspuns în loc să îl descărcați în întregime
în avans.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);
}
Notă
Suportul pentru răspuns în flux trebuie implementat de gestionarul HTTP utilizat de către un client. Este posibil ca această opțiune să nu fie suportată de fiecare gestionar HTTP, dar este posibil ca opțiunea interfața obiectului de răspuns rămâne aceeași, indiferent dacă dacă este sau nu acceptată de gestionarul de răspuns.
GuzzleHttp\RequestOptions::SYNCHRONOUS
Descrie comportamentul de verificare a certificatului SSL al unei cereri.
true
pentru a activa verificarea certificatului SSL și a utiliza comportamentul implicit.
CA furnizată de sistemul de operare.false
pentru a dezactiva verificarea certificatelor (este nesigur!).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]);
Dacă nu aveți nevoie de un pachet de certificate specific, Mozilla oferă o opțiune pachet de certificate CA utilizat în mod obișnuit, care poate fi descărcat aici (furnizat de administratorul cURL). Odată ce aveți un pachet CA disponibil pe pe disc, puteți seta setarea "openssl.cafile" din PHP ini pentru a indica calea de acces la fișierului, permițându-vă să omiteți opțiunea de solicitare "verify". Mai multe detalii despre certificatele SSL pot fi găsite pe site-ul cURL website.
0
pentru a aștepta pe termen nedefinit (comportamentul implicit).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]);