Du kan anpassa begäranden som skapas och överförs av en klient med hjälp av begäranalternativ. Alternativ för begäran styr olika aspekter av en begäran inklusive rubriker, parametrar för frågesträngar, inställningar för timeout, kroppen av en begäran och mycket mer.
I alla följande exempel används följande klient:
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
Beskriver hur en begäran omdirigeras
[
'max' => 5,
'strict' => false,
'referer' => false,
'protocols' => ['http', 'https'],
"track_redirects" => false
]
GuzzleHttp\RequestOptions::ALLOW_REDIRECTS
Ange false
för att inaktivera omdirigeringar.
$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302
Ställ in true
(standardinställningen) för att aktivera normala omdirigeringar med ett maximalt antal på 5 omdirigeringar.
$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200
Du kan också skicka en associativ matris som innehåller följande nyckel- och värdepar:
max: (int, default=5) maximalt antal tillåtna omdirigeringar.
strikt: (bool, default=false) Ställ in true för att använda strikta omdirigeringar. Strikta RFC-kompatibla omdirigeringar innebär att POST-omdirigeringsförfrågningar skickas som POST-begäranden, istället för att göra det som de flesta webbläsare gör, nämligen att omdirigera POST-begäranden. med GET-förfrågningar.
referer: (bool, default=false) Ställ in till true för att möjliggöra tillägg av referer. när man omdirigerar.
protokoll: (array, default=['http', 'https']) Anger vilka protokoll som ska användas. tillåts för omdirigeringar.
on_redirect: (callable) PHP-callable som anropas när en omdirigering sker. stöter på. Den anropsbara funktionen anropas med den ursprungliga begäran och omdirigeringssvaret som mottogs. Alla returvärden från on_redirect funktionen ignoreras.
track_redirects: (bool) När den är inställd på true
, kommer varje omdirigerad URI och status
kod som uppträder kommer att spåras i X-Guzzle-Redirect-History
och
X-Guzzle-Redirect-Status-History
. Alla URI:er och
statuskoder kommer att lagras i den ordning som omdirigeringarna hittades.
Observera: Vid spårning av omdirigeringar kommer X-Guzzle-Redirect-History
att
utesluta den ursprungliga begäranens URI och X-Guzzle-Redirect-Status-History
kommer att utesluta den slutliga statuskoden.
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...
Varning
Det här alternativet har bara effekt om din handläggare har funktionen
GuzzleHttp\Middleware::redirect
middleware. Denna middleware läggs till
som standard när en klient skapas utan handläggare, och läggs till av
standard när en handläggare skapas med GuzzleHttp\HandlerStack::create
.
Obs
Det här alternativet har ingen effekt när du gör förfrågningar med GuzzleHttp\Client::sendRequest()
. För att följa PSR-18 returneras alla omdirigeringssvar som de är.
Överlämna en matris med HTTP-autentiseringsparametrar som ska användas med
begäran. Matrisen måste innehålla användarnamnet i index 3078472929834293119510], lösenordet i index [0], lösenordet i
index [1], och du kan eventuellt ange en inbyggd autentiseringstyp i
index [2]. Överlämna null
för att inaktivera autentisering för en begäran.
Ingen
GuzzleHttp\RequestOptions::AUTH
De inbyggda autentiseringstyperna är följande:
Authorization
(standardinställningen som används om ingen är
anges).$client->request('GET', '/get', ['auth' => ['username', 'password']]);
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'digest']
]);
Obs
Detta stöds för närvarande endast när du använder cURL-hanteraren, men att skapa en ersättare som kan användas med alla HTTP-hanterare är planeras.
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'ntlm']
]);
Obs
Detta stöds för närvarande endast när du använder cURL-hanteraren.
Alternativet body
används för att styra kroppen för en enhet.
som omsluter en begäran (t.ex. PUT, POST, PATCH).
fopen()
resourcePsr\Http\Message\StreamInterface
Ingen
GuzzleHttp\RequestOptions::BODY
Den här inställningen kan ställas in på någon av följande typer:
string
// Du kan skicka begäranden som använder en sträng som meddelandekropp.
$client->request('PUT', '/put', ['body' => 'foo']);
resurs som returneras från fopen()
// Du kan skicka förfrågningar som använder en strömresurs som kropp.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
$client->request('PUT', '/put', ['body' => $resource]);
Psr\Http\Message\StreamInterface
// Du kan skicka förfrågningar som använder ett Guzzle-strömobjekt som kropp.
$stream = GuzzleHttp\Psr7\Utils::streamFor('contents...');
$client->request('POST', '/post', ['body' => $stream8798498498526573008982);
Obs
Det här alternativet kan inte användas med form_params
, multipart
eller json
.
Ställ in en sträng för att ange sökvägen till en fil som innehåller en PEM formaterat certifikat på klientsidan. Om ett lösenord krävs, sätts till en array som innehåller sökvägen till PEM-filen i det första arrayelementet. följt av det lösenord som krävs för certifikatet i det andra arrayelementet. element.
Ingen
GuzzleHttp\RequestOptions::CERT
$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);
GuzzleHttp\Cookie\CookieJarInterface
GuzzleHttp\RequestOptions::COOKIES
Du måste ange cookies-alternativet som ett GuzzleHttp\Cookie\CookieJarInterface
eller false
.
$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);
Varning
Det här alternativet har bara effekt om din handläggare har funktionen
GuzzleHttp\Middleware::cookies
middleware. Denna middleware läggs till
som standard när en klient skapas utan handläggare, och läggs till av
standard när en handläggare skapas med GuzzleHttp\default_handler
.
Tips
När du skapar en klient kan du ställa in standardcookiealternativet till true
för att använda en delad cookie-session som är associerad med klienten.
0
för att vänta på obestämd tid (standardbeteendet).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]);
Obs
Den här inställningen måste stödjas av den HTTP-hanterare som används för att skicka en begäran.
connect_timeout
stöds för närvarande endast av den inbyggda cURL
hanterare.
Ställ in true
eller ställ in en PHP-ström som returneras av fopen()
för att
aktivera felsökningsutmatning med den handläggare som används för att skicka en begäran. Till exempel,
När du använder cURL för att överföra förfrågningar kan cURL:s verbose-värde för CURLOPT_VERBOSE
kommer att sändas ut. När du använder PHP:s stream wrapper kan stream wrapper
meddelanden skickas ut. Om den är inställd på true skrivs utdata till
PHP:s STDOUT. Om en PHP-ström tillhandahålls skrivs utdata till strömmen.
fopen()
resourceIngen
GuzzleHttp\RequestOptions::DEBUG
$client->request('GET', '/get', ['debug' => true]);
Om du kör exemplet ovan skulle du få ut något som liknar följande:
* 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
Ange om Content-Encoding
svar (gzip,
deflate etc.) avkodas automatiskt.
true
GuzzleHttp\RequestOptions::DECODE_CONTENT
Det här alternativet kan användas för att styra hur innehållskodade svarskroppar ska
hanteras. Som standard är decode_content
satt till true, vilket innebär att alla gzippade
eller deflaterat svar kommer att avkodas av Guzzle.
När den är inställd på false
avkodas aldrig svarskroppen, vilket innebär att bytena passerar genom handläggaren oförändrade.
// Request gzipped data, but do not decode it while downloading
$client->request('GET', '/foo.js', [
'headers' => ['Accept-Encoding' => 'gzip'],
'decode_content' => false
]);
När den är inställd på en sträng avkodas bytesna i ett svar och strängvärdet
som tillhandahålls till alternativet decode_content
skickas som Accept-Encoding
.
i huvudet på begäran.
// Pass "gzip" as the Accept-Encoding header.
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);
Antalet millisekunder som ska fördröjas innan begäran skickas.
null
GuzzleHttp\RequestOptions::DELAY
Kontrollerar beteendet hos rubriken "Förvänta dig: 100-Fortsätt".
1048576
GuzzleHttp\RequestOptions::EXPECT
Ställ in true
för att aktivera "Expect: 100-Continue"-huvudet för alla begäranden.
som skickar en kropp. Ange false
för att inaktivera "Expect: 100-Continue".
för alla förfrågningar. Ställs in till ett tal så att storleken på nyttolasten måste
vara större än siffran för att skicka Expect-huvudet. Om du ställer in ett
nummer kommer att skicka Expect-huvudet för alla begäranden där storleken på
inte kan bestämmas eller där kroppen inte kan spolas tillbaka.
Som standard lägger Guzzle till "Expect: 100-Continue"-huvudet när storleken på kroppen av en begäran är större än 1 MB och en begäran använder HTTP/1.1.
Obs
Det här alternativet gäller bara när HTTP/1.1 används. De inställningar som gäller för HTTP/1.0 och HTTP/2.0-protokollen har inte stöd för rubriken "Expect: 100-Continue". Stöd för hantering av arbetsflödet "Expect: 100-Continue" måste finnas. implementeras av Guzzle HTTP-hanterare som används av en 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']);
Obs
Den här inställningen måste stödjas av den HTTP-hanterare som används för att skicka en begäran.
force_ip_resolve
stöds för närvarande endast av den inbyggda cURL
och stream-hanterare.
GuzzleHttp\RequestOptions::FORM_PARAMS
Associativ matris av namn på formulärfält till värden där varje värde är en sträng eller en array av strängar. Ställer in Content-Type-huvudet till application/x-www-form-urlencoded när ingen Content-Type-huvudet redan är redan finns.
$client->request('POST', '/post', [
'form_params' => [
'foo' => 'bar',
'baz' => ['hi', 'there!']
]
]);
Obs
form_params
kan inte användas med alternativet multipart
. Du måste använda
det ena eller det andra. Använd form_params
för application/x-www-form-urlencoded
.
och multipart
för multipart/form-data
.
Det här alternativet kan inte användas med body
, multipart
eller 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']
]
]);
Huvudet kan läggas till som standardalternativ när du skapar en klient. När rubriker
används som standardalternativ tillämpas de endast om den begäran som skapas
inte redan innehåller den specifika rubriken. Detta inkluderar både begäranden som skickas
till klienten i metoderna send()
och sendAsync()
, och förfrågningar
som skapas av klienten (t.ex. request()
och 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
för att inaktivera undantag för ett HTTP-protokoll.
fel (dvs. 4xx- och 5xx-svar). Undantag skapas som standard när
HTTP-protokollfel uppstår.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
Varning
Det här alternativet har bara effekt om din handläggare har funktionen
GuzzleHttp\Middleware::httpErrors
middleware. Denna middleware läggs till
som standard när en klient skapas utan handläggare, och läggs till av
standard när en handläggare skapas med GuzzleHttp\default_handler
.
Stöd för IDN (Internationalized Domain Name) (aktiverat som standard om
intl
är tillgängligt).
true
om intl
tillägget är tillgängligt (och ICU-biblioteket är 4.6+ för PHP 7.2+), false
annars
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
Aktiverar/avaktiverar IDN-stöd, kan också användas för exakt kontroll genom att kombinera
IDNA_*-konstanter (utom IDNA_ERROR_*), se $options
parametern i
idn_to_ascii()
för mer information.
json
används för att enkelt ladda upp JSON-kodade data som
kroppen av en begäran. En Content-Type-huvudrubrik med application/json
kommer att vara
läggas till om inget Content-Type-huvud redan finns i meddelandet.json_encode()
funktion.GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);
Här är ett exempel på hur man använder tap
middleware för att se vilken förfrågan som skickas över kabeln.
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)
]);
Obs
Det här begäranalternativet stöder inte anpassning av Content-Type-huvudet.
eller något av alternativen från PHP:s json_encode()
funktion. Om du behöver anpassa dessa inställningar måste du skicka över
JSON-kodade data i begäran själv med hjälp av body
begäran.
och du måste ange rätt Content-Type-huvud med hjälp av alternativet
headers
.
Det här alternativet kan inte användas med body
, form_params
eller multipart
.
GuzzleHttp\RequestOptions::MULTIPART
Värdet för multipart
är en matris av associativa matriser som var och en innehåller följande nyckel- och värdepar:
name
: (sträng, obligatoriskt) namnet på formulärfältetinnehåll
: (StreamInterface/resource/string, obligatoriskt) De data som ska användas i
formulärelementet.headers
: (array) Valfri associerande array av anpassade rubriker som ska användas med
formulärelementet.filnamn
: (sträng) Valfri sträng som ska skickas som filnamn i delen.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'
],
]
]);
Obs
multipart
kan inte användas med alternativet form_params
. Du måste
använda det ena eller det andra. Använd form_params
för application/x-www-form-urlencoded
.
och multipart
för multipart/form-data
.
Det här alternativet kan inte användas med body
, form_params
eller json
.
En callable som anropas när HTTP-huvudena i svaret har har mottagits men inte har börjat laddas ner ännu.
GuzzleHttp\RequestOptions::ON_HEADERS
Den anropbara funktionen accepterar ett Psr\Http\Message\ResponseInterface
objekt. Om ett undantag
avbryts av den anropsbara funktionen, kommer det löfte som är associerat med svaret att
avvisas med ett GuzzleHttp\Exception\RequestException
som omsluter
som omsluter undantaget som kastades.
Du kan behöva veta vilka rubriker och statuskoder som togs emot innan data kan skrivas till diskbänken.
// 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!');
}
}
]);
Obs
När du skriver HTTP-hanterare måste funktionen on_headers
anropas.
innan data skrivs till svarskroppen.
on_stats
ger dig tillgång till överföringsstatistik för en
begäran och få tillgång till överföringsdetaljer på lägre nivå för handläggaren.
som är associerad med din klient. on_stats
är en anropsbar funktion som anropas
när en handläggare har avslutat sändningen av en begäran. Återkallelsen anropas
med överföringsstatistik om begäran, det mottagna svaret eller den
fel som uppstått. I uppgifterna ingår den totala tiden som tog
för att skicka begäran.
GuzzleHttp\RequestOptions::ON_STATS
Den anropbara funktionen accepterar ett 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());
}
}
]);
Definierar en funktion som ska anropas när överföringen fortskrider.
Ingen
GuzzleHttp\RequestOptions::PROGRESS
Funktionen accepterar följande positionella argument:
// Send a GET request to /get?foo=bar
$result = $client->request(
'GET',
'/',
[
'progress' => function(
$downloadTotal,
$downloadedBytes,
$uploadTotal,
$uploadedBytes
) {
//do something
},
]
);
Överlämna en sträng för att ange en HTTP-proxy, eller en array för att ange en för att ange olika proxys för olika protokoll.
Ingen
GuzzleHttp\RequestOptions::PROXY
Överlämna en sträng för att ange en proxy för alla protokoll.
$client->request('GET', '/', ['proxy' => 'http://localhost:8125']);
Överlämna en associativ array för att ange HTTP-proxies för specifika URI-scheman.
(dvs. "http", "https"). Lämna ett no
nyckel- och värdepar för att tillhandahålla en lista över
värdnamn som inte ska proxysändas till.
Obs
Guzzle fyller automatiskt i detta värde med din miljös
NO_PROXY
miljövariabel. Men när du tillhandahåller en proxy
är det upp till dig att ange no
-värdet som parsas från
miljövariabeln NO_PROXY
.
(t.ex. 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
]
]);
Obs
Du kan ange proxy-URL:er som innehåller ett schema, användarnamn och lösenord.
Till exempel "http://username:[email protected]:10"
.
Associativ matris med värden för frågetecken eller frågetecken som ska läggas till begäran.
Ingen
GuzzleHttp\RequestOptions::QUERY
// Send a GET request to /get?foo=bar
$client->request('GET', '/get', ['query' => ['foo' => 'bar']]);
Förfrågningssträngar som anges i alternativet query
kommer att skriva över alla värden för förfrågningssträngar som anges i URI:n för en begäran.
// Send a GET request to /get?foo=bar
$client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);
default_socket_timeout
PHP-ini-inställningen.GuzzleHttp\RequestOptions::READ_TIMEOUT
Tidsgränsen gäller för enskilda läshändelser på en strömmad kropp (när alternativet stream
är aktiverat).
$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());
Ange var kroppen av ett svar ska sparas.
fopen()
resourcePsr\Http\Message\StreamInterface
PHP temp stream
GuzzleHttp\RequestOptions::SINK
Överlämna en sträng för att ange sökvägen till en fil som ska lagra innehållet i svarskroppen:
$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);
Skicka en resurs som returneras från fopen()
för att skriva svaret till en PHP-ström:
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$client->request('GET', '/stream/20', ['sink' => $resource]);
Överlämna ett Psr\Http\Message\StreamInterface
objekt för att strömma svarskroppen till en öppen PSR-7-ström.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$stream = \GuzzleHttp\Psr7\Utils::streamFor($resource);
$client->request('GET', '/stream/20', ['save_to' => $stream]);
Obs
Förfrågningsalternativet save_to
har avvecklats till förmån för alternativet
sink
. Att tillhandahålla alternativet save_to
är nu ett alias
av sink
.
Ange sökvägen till en fil som innehåller en privat SSL-nyckel i PEM format. Om ett lösenord krävs, sätts det till en array som innehåller sökvägen. till SSL-nyckeln i det första arrayelementet följt av det lösenord som krävs. för certifikatet i det andra elementet.
Ingen
GuzzleHttp\RequestOptions::SSL_KEY
Obs
ssl_key
implementeras av HTTP-hanterare. Detta är för närvarande endast
cURL-hanteraren, men kan komma att stödjas av andra tredjepartshanterare.
handläggare.
true
för att strömma ett svar i stället för att ladda ner det i sin helhet.
i förväg.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);
}
Obs
Stöd för strömsvar måste implementeras av den HTTP-hanterare som används av en klient. Det här alternativet kanske inte stöds av alla HTTP-hanterare, men svarsobjektets gränssnitt förblir detsamma oberoende av om om det stöds av handläggaren eller inte.
GuzzleHttp\RequestOptions::SYNCHRONOUS
Beskriver hur SSL-certifikatet verifieras för en begäran.
true
för att aktivera SSL-certifikatverifiering och använda standardvärdet
CA-paketet som tillhandahålls av operativsystemet.false
för att inaktivera certifikatverifiering (detta är osäkert!).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]);
Om du inte behöver ett specifikt certifikatpaket tillhandahåller Mozilla en vanligt förekommande CA-paket som kan laddas ner. här (tillhandahålls av den som underhåller cURL). När du har ett CA-paket tillgängligt på kan du ställa in inställningen "openssl.cafile" i PHP ini så att den pekar på sökvägen till filen, vilket gör att du kan utelämna alternativet "verify" för begäran. Mycket mer detaljer om SSL-certifikat finns på webbplatsen cURL-webbplats.
0
för att vänta på obestämd tid (standardbeteendet).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]);