Możesz dostosować żądania tworzone i przesyłane przez klienta używając opcji żądania. Opcje żądania kontrolują różne aspekty żądania włączając w to nagłówki, parametry ciągu zapytania, ustawienia limitu czasu, treść żądania i wiele innych. żądania i wiele innych.
Wszystkie poniższe przykłady używają następującego klienta:
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
Opisuje zachowanie przekierowania dla żądania
[
'max' => 5,
'strict' => false,
'referer' => false,
'protocols' => ['http', 'https'],
'track_redirects' => false
]
GuzzleHttpRequestOptions::ALLOW_REDIRECTS
Ustaw na false
aby wyłączyć przekierowania.
$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]);
echo $res->getStatusCode();
// 302
Ustawione na true
(ustawienie domyślne), aby włączyć normalne przekierowania z maksymalną liczbą 5 przekierowań.
$res = $client->request('GET', '/redirect/3');
echo $res->getStatusCode();
// 200
Można również przekazać tablicę asocjacyjną zawierającą następujące pary klucz-wartość:
max: (int, default=5) maksymalna liczba dozwolonych przekierowań.
strict: (bool, default=false) Ustaw na true, aby używać ścisłych przekierowań. Ścisłe przekierowania zgodne z RFC oznaczają, że żądania przekierowania POST są wysyłane jako POST, zamiast robić to, co robi większość przeglądarek, czyli przekierowywać żądania POST z żądaniami GET.
referer: (bool, default=false) Ustaw na true, aby włączyć dodawanie nagłówka Referer podczas przekierowania.
protocols: (array, default=['http', 'https']) Określa, które protokoły są dozwolone dla żądań przekierowania.
on_redirect: (callable) Wywołanie PHP, które jest wywoływane, gdy napotkane zostanie przekierowanie jest napotkane. Wywoływana jest z oryginalnym żądaniem i odpowiedzią odpowiedzią przekierowania, która została otrzymana. Każda wartość zwracana przez funkcję on_redirect jest ignorowana.
track_redirects: (bool) Gdy ustawione na true
, każdy przekierowany URI i napotkany kod statusu będzie śledzony w X-Guzzle-Redirect-Heads.
i napotkany kod będą śledzone w
X-Guzzle-Redirect-History
i X-Guzzle-Redirect-History
.
X-Guzzle-Redirect-Status-History
odpowiednio w nagłówkach. Wszystkie URI i
kody statusu będą przechowywane w kolejności, w jakiej napotkano przekierowania.
Uwaga: Podczas śledzenia przekierowań nagłówek X-Guzzle-Redirect-History
będzie
wyklucza URI początkowego żądania, a X-Guzzle-Redirect-Status-History
header wykluczy końcowy kod statusu.
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;
$onRedirect = function(
RequestInterface $request,
ResponseInterface $response,
UriInterface $uri
) {
echo 'Redirecting! ' . $request->getUri() . ' to ' . $uri . "\n";
};
$res = $client->request('GET', '/redirect/3', [
'allow_redirects' => [
'max' => 10, // allow at most 10 redirects.
'strict' => true, // use "strict" RFC compliant redirects.
'referer' => true, // add a Referer header
'protocols' => ['https'], // only allow https URLs
'on_redirect' => $onRedirect,
'track_redirects' => true
]
]);
echo $res->getStatusCode();
// 200
echo $res->getHeaderLine('X-Guzzle-Redirect-History');
// http://first-redirect, http://second-redirect, etc...
echo $res->getHeaderLine('X-Guzzle-Redirect-Status-History');
// 301, 302, etc...
Ostrzeżenie
Opcja ta działa tylko wtedy, gdy Twój handler posiada funkcję
code class="docutils literal">GuzzleHttpMiddleware::redirect middleware. To oprogramowanie pośredniczące jest dodawane
domyślnie, gdy tworzony jest klient bez handler'a, oraz jest dodawane
domyślnie podczas tworzenia handlerów za pomocą GuzzleHttp\HandlerStack::create
.
Uwaga
Opcja ta nie ma żadnego wpływu podczas tworzenia żądań za pomocą GuzzleHttpClient::sendRequest()
. Aby zachować zgodność z PSR-18, każda odpowiedź przekierowania jest zwracana w takiej postaci, w jakiej jest.
Podaj tablicę parametrów uwierzytelniania HTTP, które mają być użyte w żądaniu.
żądaniem. Tablica musi zawierać nazwę użytkownika w indeksie [0], hasło w
indeksie [1], oraz opcjonalnie można podać wbudowany typ uwierzytelniania w
index [2]. Przekaż null
, aby wyłączyć uwierzytelnianie dla żądania.
Brak
GuzzleHttpRequestOptions::AUTH
Wbudowane typy uwierzytelniania są następujące:
Authorization
(domyślne ustawienie używane, jeśli nie podano żadnego).
określone).$client->request('GET', '/get', ['auth' => ['username', 'password']]);
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'digest']
]);
Uwaga
Obecnie jest to obsługiwane tylko przy użyciu handler'a cURL, ale planowane jest stworzenie zamiennika, który może być używany z dowolnym handlerem HTTP. planowane.
$client->request('GET', '/get', [
'auth' => ['username', 'password', 'ntlm']
]);
Uwaga
Obecnie jest to obsługiwane tylko przy użyciu handler'a cURL.
body
jest używana do kontrolowania treści żądania zawierającego encję (np. PUT, POST, PATCH)
załączającego żądanie (np. PUT, POST, PATCH).fopen()
resourcePsr\Message\StreamInterface
Brak
GuzzleHttpRequestOptions::BODY
W tym ustawieniu można wybrać dowolny z następujących typów:
string
// Możesz wysyłać żądania, które używają ciągu znaków jako ciała wiadomości.
$client->request('PUT', '/put', ['body' => 'foo']);
zasób zwrócony z fopen()
// Możesz wysyłać żądania, które używają zasobu strumienia jako ciała.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
$client->request('PUT', '/put', ['body' => $resource]);
Psr
// Możesz wysyłać żądania, które używają obiektu strumienia Guzzle jako ciała.
$stream = GuzzleHttp::streamFor('content...');
$client->request('POST', '/post', ['body' => $stream]);
Uwaga
Ta opcja nie może być używana z form_params
, multipart
, lub json
.
Ustaw na ciąg znaków, aby określić ścieżkę do pliku zawierającego certyfikat klienta w formacie PEM sformatowany certyfikat po stronie klienta. Jeśli wymagane jest hasło, to ustaw na tablicę zawierającą ścieżkę do pliku PEM w pierwszym elemencie tablicy a następnie hasło wymagane do certyfikatu w drugim elemencie tablicy. element.
Brak
GuzzleHttpRequestOptions::CERT
$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);
GuzzleHttpCookieJarInterface
GuzzleHttpRequestOptions::COOKIES
Musisz określić opcję cookies jako GuzzleHttp\CookieJarInterface
lub false
.
$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);
Ostrzeżenie
Opcja ta działa tylko wtedy, gdy Twój handler posiada oprogramowanie pośredniczące
GuzzleHttp::cookies
middleware. To oprogramowanie pośredniczące jest dodawane
domyślnie, gdy tworzony jest klient bez handler'a, oraz jest dodawane
domyślnie podczas tworzenia handlerów za pomocą GuzzleHttp\default_handler
.
Wskazówka
Podczas tworzenia klienta, możesz ustawić domyślną opcję cookie na true
aby użyć współdzielonej sesji cookie związanej z klientem.
0
aby czekać w nieskończoność (zachowanie domyślne).0
GuzzleHttpRequestOptions::CONNECT_TIMEOUT
// Timeout if the client fails to connect to the server in 3.14 seconds.
$client->request('GET', '/delay/5', ['connect_timeout' => 3.14]);
Uwaga
To ustawienie musi być obsługiwane przez handler HTTP używany do wysyłania żądania.
connect_timeout
jest obecnie obsługiwane tylko przez wbudowany w cURL
handler.
Ustaw na true
lub ustaw na strumień PHP zwrócony przez fopen()
, aby
włączyć wyjście debugowania z handlerem użytym do wysłania żądania. Na przykład,
podczas używania cURL do przesyłania żądań, będzie emitowany komunikat cURL o treści CURLOPT_VERBOSE
zostanie wyemitowana. Gdy używasz wrappera strumienia PHP, będą emitowane powiadomienia stream wrappera
będą emitowane powiadomienia. Jeśli ustawione na true, wyjście jest zapisywane do
STDOUT PHP. Jeśli podany jest strumień PHP, wyjście jest zapisywane do tego strumienia.
fopen()
resourceBrak
GuzzleHttpRequestOptions::DEBUG
$client->request('GET', '/get', ['debug' => true]);
Uruchomienie powyższego przykładu spowodowałoby wyświetlenie czegoś takiego jak poniżej:
* About to connect() to httpbin.org port 80 (#0)
* Trying 107.21.213.98... * Connected to httpbin.org (107.21.213.98) port 80 (#0)
> GET /get HTTP/1.1
Host: httpbin.org
User-Agent: Guzzle/4.0 curl/7.21.4 PHP/5.5.7
< HTTP/1.1 200 OK
< Access-Control-Allow-Origin: *
< Content-Type: application/json
< Date: Sun, 16 Feb 2014 06:50:09 GMT
< Server: gunicorn/0.17.4
< Content-Length: 335
< Connection: keep-alive
<
* Connection #0 to host httpbin.org left intact
Określ, czy Content-Encoding
odpowiedzi (gzip,
deflate, itp.) są automatycznie dekodowane.
true
GuzzleHttpRequestOptions::DECODE_CONTENT
Opcja ta może być użyta do kontrolowania sposobu, w jaki kodowane są treści odpowiedzi
obsługiwane. Domyślnie, decode_content
jest ustawione na true, co oznacza, że każda gzipped
lub deflowana odpowiedź zostanie zdekodowana przez Guzzle.
Gdy ustawione na false
, ciało odpowiedzi nigdy nie jest dekodowane, co oznacza, że bajty przechodzą przez handler bez zmian.
// Request gzipped data, but do not decode it while downloading
$client->request('GET', '/foo.js', [
'headers' => ['Accept-Encoding' => 'gzip'],
'decode_content' => false
]);
Gdy ustawiona na łańcuch, bajty odpowiedzi są dekodowane, a wartość łańcuchowa
podana w opcji decode_content
jest przekazywana jako Accept-Encoding
nagłówka żądania.
// Pass "gzip" as the Accept-Encoding header.
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);
Liczba milisekund do opóźnienia przed wysłaniem żądania.
null
GuzzleHttpRequestOptions::DELAY
Kontroluje zachowanie nagłówka "Expect: 100-Continue"
1048576
GuzzleHttpRequestOptions::EXPECT
Ustawione na true
, aby włączyć nagłówek "Expect: 100-Continue" dla wszystkich żądań
które wysyłają ciało. Ustaw na false
, aby wyłączyć nagłówek "Expect: 100-Continue"
nagłówek dla wszystkich żądań. Ustaw na liczbę, aby rozmiar ładunku musiał
być większy niż ta liczba, aby wysłać nagłówek Expect. Ustawienie na
liczba spowoduje wysłanie nagłówka Expect dla wszystkich żądań, w których nie można określić rozmiaru
nie może być określony lub gdy ciało nie jest przewijane.
Domyślnie Guzzle dodaje nagłówek "Expect: 100-Continue", gdy rozmiar treści żądania jest większy niż 1 MB i żądanie korzysta z HTTP/1.1.
Uwaga
Opcja ta działa tylko w przypadku korzystania z protokołu HTTP/1.1. Protokoły HTTP/1.0 i HTTP/2.0 nie obsługują nagłówka "Expect: 100-Continue". Wsparcie dla obsługi przepływu pracy "Expect: 100-Continue" musi być zaimplementowane przez obsługę HTTP Guzzle używaną przez klienta.
GuzzleHttpRequestOptions::FORCE_IP_RESOLVE
// Force ipv4 protocol
$client->request('GET', '/foo', ['force_ip_resolve' => 'v4']);
// Force ipv6 protocol
$client->request('GET', '/foo', ['force_ip_resolve' => 'v6']);
Uwaga
To ustawienie musi być obsługiwane przez handler HTTP używany do wysyłania żądania.
force_ip_resolve
jest obecnie obsługiwane tylko przez wbudowany cURL
i stream handlers.
GuzzleHttpRequestOptions::FORM_PARAMS
Tablica asocjacyjna nazw pól formularza z wartościami, gdzie każda wartość jest łańcuchem lub tablicą łańcuchów. Ustawia nagłówek Content-Type na application/x-www-form-urlencoded, jeśli nie występuje nagłówek Content-Type jest obecny.
$client->request('POST', '/post', [
'form_params' => [
'foo' => 'bar',
'baz' => ['hi', 'there!']
]
]);
Uwaga
form_params
nie może być użyty z opcją multipart
. Będziesz musiał użyć
jednego lub drugiego. Użyj form_params
dla application/x-www-form-urlencoded
dla żądań, oraz multipart
dla żądań multipart/form-data
.
Ta opcja nie może być używana z body
, multipart
, lub json
.
GuzzleHttpRequestOptions::HEADERS
// Set various headers on a request
$client->request('GET', '/get', [
'headers' => [
'User-Agent' => 'testing/1.0',
'Accept' => 'application/json',
'X-Foo' => ['Bar', 'Baz']
]
]);
Nagłówki mogą zostać dodane jako opcje domyślne podczas tworzenia klienta. Gdy nagłówki
są używane jako opcje domyślne, są one stosowane tylko wtedy, gdy tworzone żądanie
nie zawiera już określonego nagłówka. Dotyczy to zarówno żądań przekazywanych
do klienta w metodach send()
i sendAsync()
, jak i żądania
tworzone przez klienta (np. request()
i requestAsync()
).
$client = new GuzzleHttp\Client(['headers' => ['X-Foo' => 'Bar']]);
// Will send a request with the X-Foo header.
$client->request('GET', '/get');
// Sets the X-Foo header to "test", which prevents the default header
// from being applied.
$client->request('GET', '/get', ['headers' => ['X-Foo' => 'test']]);
// Will disable adding in default headers.
$client->request('GET', '/get', ['headers' => null]);
// Will not overwrite the X-Foo header because it is in the message.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request);
// Will overwrite the X-Foo header with the request option provided in the
// send method.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request, ['headers' => ['X-Foo' => 'overwrite']]);
false
, aby wyłączyć rzucanie wyjątków na błędy protokołu HTTP (tj. odpowiedzi 4xx i 5xx).
błędy (tj. odpowiedzi 4xx i 5xx). Wyjątki są domyślnie rzucane, gdy
Napotkane błędy protokołu HTTP.true
GuzzleHttpRequestOptions::HTTP_ERRORS
$client->request('GET', '/status/500');
// Throws a GuzzleHttp\Exception\ServerException
$res = $client->request('GET', '/status/500', ['http_errors' => false]);
echo $res->getStatusCode();
// 500
Ostrzeżenie
Opcja ta działa tylko wtedy, gdy Twój handler posiada funkcję
GuzzleHttpMiddleware::httpErrors
middleware. To oprogramowanie pośrednie jest dodawane
domyślnie, gdy tworzony jest klient bez żadnego handler'a, oraz jest dodawane
domyślnie podczas tworzenia handlerów za pomocą GuzzleHttp\default_handler
.
Obsługa domen międzynarodowych (IDN) (domyślnie włączona, jeśli
dostępne jest rozszerzenie intl
).
true
jeśli rozszerzenie intl
jest dostępne (a biblioteka ICU ma wersję 4.6+ dla PHP 7.2+), false
w przeciwnym wypadku
GuzzleHttpRequestOptions::IDN_CONVERSION
$client->request('GET', 'https://яндекс.рф');
// яндекс.рф is translated to xn--d1acpjx3f.xn--p1ai before passing it to the handler
$res = $client->request('GET', 'https://яндекс.рф', ['idn_conversion' => false]);
// The domain part (яндекс.рф) stays unmodified
Włącza/wyłącza obsługę IDN, może być również użyta do precyzyjnej kontroli poprzez kombinację
stałych IDNA_* (z wyjątkiem IDNA_ERROR_*), patrz $options
parametr w
idn_to_ascii()
dokumentacji, aby uzyskać więcej szczegółów.
json
jest używana do łatwego przesyłania danych zakodowanych w JSON jako
ciało żądania. Nagłówek Content-Type o wartości application/json
zostanie
jeśli w wiadomości nie ma jeszcze nagłówka Content-Type.json_encode()
.GuzzleHttpRequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);
Oto przykład użycia tap
middleware, aby zobaczyć jakie żądanie jest wysyłane przez kabel.
use GuzzleHttp\Middleware;
// Create a middleware that echoes parts of the request.
$tapMiddleware = Middleware::tap(function ($request) {
echo $request->getHeaderLine('Content-Type');
// application/json
echo $request->getBody();
// {"foo":"bar"}
});
// The $handler variable is the handler passed in the
// options to the client constructor.
$response = $client->request('PUT', '/put', [
'json' => ['foo' => 'bar'],
'handler' => $tapMiddleware($handler)
]);
Uwaga
Ta opcja żądania nie obsługuje dostosowywania nagłówka Content-Type
ani żadnej z opcji PHP json_encode()
funkcji. Jeśli potrzebujesz dostosować te ustawienia, to musisz przekazać zakodowane dane
JSON zakodowane dane do żądania za pomocą opcji body
request
i musisz określić poprawny nagłówek Content-Type używając opcji
headers
opcji żądania.
Opcja ta nie może być używana z body
, form_params
, lub multipart
.
GuzzleHttpRequestOptions::MULTIPART
Wartością multipart
jest tablica tablic asocjacyjnych, z których każda zawiera następujące pary klucz-wartość:
nazwa
: (string, wymagane) nazwa pola formularzacontent
: (StreamInterface/resource/string, wymagane) Dane, które mają być użyte w
elemencie formularza.headers
: (array) Opcjonalna tablica asocjacyjna niestandardowych nagłówków do użycia z
elementem formularza.filename
: (string) Opcjonalny ciąg znaków do wysłania jako nazwa pliku w części.use GuzzleHttp\Psr7;
$client->request('POST', '/post', [
'multipart' => [
[
'name' => 'foo',
'contents' => 'data',
'headers' => ['X-Baz' => 'bar']
],
[
'name' => 'baz',
'contents' => Psr7\Utils::tryFopen('/path/to/file', 'r')
],
[
'name' => 'qux',
'contents' => Psr7\Utils::tryFopen('/path/to/file', 'r'),
'filename' => 'custom_filename.txt'
],
]
]);
Uwaga
multipart
nie może być używany z opcją form_params
. Będziesz musiał
użyć jednej lub drugiej. Użyj form_params
dla application/x-www-form-urlencoded
dla żądań, oraz multipart
dla żądań multipart/form-data
.
Ta opcja nie może być użyta z body
, form_params
, lub json
.
Wywołanie, które jest wywoływane, gdy nagłówki HTTP odpowiedzi zostały odebrane, ale ciało nie rozpoczęło jeszcze pobierania. zostały odebrane, ale ciało nie zaczęło się jeszcze pobierać.
GuzzleHttpRequestOptions::ON_HEADERS
Wywołanie przyjmuje obiekt Psr\Message\ResponseInterface
. Jeśli wyjątek
zostanie rzucony przez wywołanie, wówczas obietnica związana z odpowiedzią zostanie
zostanie odrzucona wraz z GuzzleHttp\Exception\RequestException
, który opakowuje wyjątek, który został rzucony.
wyjątek, który został rzucony.
Możesz potrzebować wiedzieć, jakie nagłówki i kody statusu zostały odebrane, zanim dane mogą zostać zapisane do kanału.
// Reject responses that are greater than 1024 bytes.
$client->request('GET', 'http://httpbin.org/stream/1024', [
'on_headers' => function (ResponseInterface $response) {
if ($response->getHeaderLine('Content-Length') > 1024) {
throw new \Exception('The file is too big!');
}
}
]);
Uwaga
Podczas pisania handlerów HTTP, funkcja on_headers
musi być wywołana
przed zapisem danych do treści odpowiedzi.
on_stats
pozwala uzyskać dostęp do statystyk transferu żądania
żądania oraz dostęp do szczegółów transferu niższego poziomu dla handlerów
powiązanego z twoim klientem. on_stats
jest wywołaniem, które jest wywoływane
gdy handler zakończy wysyłanie żądania. Wywołanie zwrotne jest wywoływane
z statystykami transferu dotyczącymi żądania, otrzymanej odpowiedzi, lub
napotkanym błędzie. W danych zawarta jest całkowita ilość czasu
do wysłania żądania.
GuzzleHttpRequestOptions::ON_STATS
Wywoływalna przyjmuje obiekt GuzzleHttpTransferStats
.
use GuzzleHttp\TransferStats;
$client = new GuzzleHttp\Client();
$client->request('GET', 'http://httpbin.org/stream/1024', [
'on_stats' => function (TransferStats $stats) {
echo $stats->getEffectiveUri() . "\n";
echo $stats->getTransferTime() . "\n";
var_dump($stats->getHandlerStats());
// You must check if a response was received before using the
// response object.
if ($stats->hasResponse()) {
echo $stats->getResponse()->getStatusCode();
} else {
// Error data is handler specific. You will need to know what
// type of error data your handler uses before using this
// value.
var_dump($stats->getHandlerErrorData());
}
}
]);
Definiuje funkcję, która będzie wywoływana, gdy nastąpi postęp transferu.
Brak
GuzzleHttpRequestOptions::PROGRESS
Funkcja przyjmuje następujące argumenty pozycyjne:
// Send a GET request to /get?foo=bar
$result = $client->request(
'GET',
'/',
[
'progress' => function(
$downloadTotal,
$downloadedBytes,
$uploadTotal,
$uploadedBytes
) {
//do something
},
]
);
Podaj ciąg znaków aby określić proxy HTTP, lub tablicę aby określić różnych proxy dla różnych protokołów.
Brak
GuzzleHttpRequestOptions::PROXY
Podaj ciąg znaków, aby określić proxy dla wszystkich protokołów.
$client->request('GET', '/', ['proxy' => 'http://localhost:8125']);
Podaj tablicę asocjacyjną, aby określić serwery pośredniczące HTTP dla określonych schematów URI
(np. "http", "https"). Przekazuje no
parę klucz-wartość, aby przekazać listę
nazw hostów, które nie powinny być prokserowane.
Uwaga
Guzzle automatycznie uzupełni tę wartość zmienną środowiskową
NO_PROXY
zmienną środowiskową. Jednakże, podczas dostarczania proxy
opcja żądania, to od Ciebie zależy, czy podasz no
wartość odczytaną z
zmiennej środowiskowej NO_PROXY
(np. explode(',', getenv('NO_PROXY'))
).
$client->request('GET', '/', [
'proxy' => [
'http' => 'http://localhost:8125', // Use this proxy with "http"
'https' => 'http://localhost:9124', // Use this proxy with "https",
'no' => ['.mit.edu', 'foo.com'] // Don't use a proxy with these
]
]);
Uwaga
Możesz podać adresy URL proxy, które zawierają schemat, nazwę użytkownika i hasło.
Na przykład, "http://username:[email protected]:10"
.
Tablica asocjacyjna wartości łańcucha zapytania lub łańcuch zapytania do dodania do żądania.
Brak
GuzzleHttpRequestOptions::QUERY
// Send a GET request to /get?foo=bar
$client->request('GET', '/get', ['query' => ['foo' => 'bar']]);
Łańcuchy zapytań określone w opcji query
będą nadpisywać wszystkie wartości łańcuchów zapytań dostarczonych w URI żądania.
// Send a GET request to /get?foo=bar
$client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);
default_socket_timeout
PHP ini.GuzzleHttpRequestOptions::READ_TIMEOUT
Timeout ma zastosowanie do pojedynczych operacji odczytu ciała strumieniowego (gdy włączona jest opcja stream
).
$response = $client->request('GET', '/stream', [
'stream' => true,
'read_timeout' => 10,
]);
$body = $response->getBody();
// Returns false on timeout
$data = $body->read(1024);
// Returns false on timeout
$line = fgets($body->detach());
Określ, gdzie zostanie zapisane ciało odpowiedzi.
fopen()
resourcePsr\Message\StreamInterface
PHP temp stream
GuzzleHttpRequestOptions::SINK
Podaj ciąg znaków, aby określić ścieżkę do pliku, który będzie przechowywał zawartość ciała odpowiedzi:
$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);
Przekazuje zasób zwrócony z fopen()
, aby zapisać odpowiedź do strumienia PHP:
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$client->request('GET', '/stream/20', ['sink' => $resource]);
Przekazuje obiekt Psr\Message\StreamInterface
do strumieniowego przesyłania treści odpowiedzi do otwartego strumienia PSR-7.
$resource = \GuzzleHttp\Psr7\Utils::tryFopen('/path/to/file', 'w');
$stream = \GuzzleHttp\Psr7\Utils::streamFor($resource);
$client->request('GET', '/stream/20', ['save_to' => $stream]);
Uwaga
Opcja żądania save_to
została wycofana na rzecz opcji żądania sink
.
sink
na rzecz opcji żądania sink
. Opcja save_to
jest teraz aliasem opcji save_to
.
sink
.
Określ ścieżkę do pliku zawierającego prywatny klucz SSL w formacie PEM w formacie PEM. Jeśli wymagane jest hasło, to ustawione na tablicę zawierającą ścieżkę do klucza SSL w pierwszym elemencie tablicy, a następnie wymagane hasło. do klucza SSL w pierwszym elemencie tablicy, a następnie hasło wymagane dla certyfikatu w drugim elemencie.
Brak
GuzzleHttpRequestOptions::SSL_KEY
Uwaga
ssl_key
jest implementowany przez handler'y HTTP. Obecnie jest to obsługiwane tylko
obsługiwane przez handler cURL, ale może być obsługiwane przez inne handler'y z trzeciej części.
handlery.
true
, aby przesyłać odpowiedź strumieniowo, zamiast pobierać ją całą
z góry.false
GuzzleHttpRequestOptions::STREAM
$response = $client->request('GET', '/stream/20', ['stream' => true]);
// Read bytes off of the stream until the end of the stream is reached
$body = $response->getBody();
while (!$body->eof()) {
echo $body->read(1024);
}
Uwaga
Obsługa odpowiedzi strumieniowych musi być zaimplementowana przez handler HTTP używany przez klienta. Opcja ta może nie być obsługiwana przez każdy handler HTTP, ale interfejs interfejs obiektu odpowiedzi pozostaje taki sam niezależnie od tego, czy czy jest on wspierany przez dany handler.
GuzzleHttpRequestOptions::SYNCHRONOUS
Opisuje zachowanie weryfikacji certyfikatu SSL dla danego żądania.
true
, aby włączyć weryfikację certyfikatów SSL i użyć domyślnego
CA dostarczonego przez system operacyjny.false
, aby wyłączyć weryfikację certyfikatów (jest to niezabezpieczone!).true
GuzzleHttpRequestOptions::VERIFY
// Use the system's CA bundle (this is the default setting)
$client->request('GET', '/', ['verify' => true]);
// Use a custom SSL certificate on disk.
$client->request('GET', '/', ['verify' => '/path/to/cert.pem']);
// Disable validation entirely (don't do this!).
$client->request('GET', '/', ['verify' => false]);
Jeśli nie potrzebujesz konkretnego pakietu certyfikatów, Mozilla udostępnia powszechnie używany pakiet powszechnie używany pakiet CA, który można pobrać tutaj (dostarczony przez opiekuna cURL). Gdy masz już pakiet CA dostępny na dysku, możesz ustawić ustawienie "openssl.cafile" w PHP ini tak, aby wskazywało ścieżkę do pliku pliku, co pozwoli na pominięcie opcji "verify". Dużo więcej szczegółów na temat certyfikatów SSL można znaleźć na stronie stronie cURL.
0
aby czekać w nieskończoność (zachowanie domyślne).0
GuzzleHttpRequestOptions::TIMEOUT
// Timeout if a server does not return a response in 3.14 seconds.
$client->request('GET', '/delay/5', ['timeout' => 3.14]);
// PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\TransferException'
1.1
GuzzleHttpRequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);