Параметры запроса

Вы можете настроить запросы, создаваемые и передаваемые клиентом, используя опции запроса. Параметры запроса управляют различными аспектами запроса включая заголовки, параметры строки запроса, настройки таймаута, тело запроса и многое другое.

Во всех следующих примерах используется следующий клиент:

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

allow_redirects

Резюме

Описывает поведение перенаправления запроса

Типы
  • bool
  • массив
По умолчанию
[
    'max' => 5,
    'strict' => false,
    'referer' => false,
    'protocols' => ['http', 'https'],
    'track_redirects' => false
]
Постоянная

GuzzleHttp\RequestOptions::ALLOW_REDIRECTS

Установите значение false, чтобы отключить перенаправления.

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

Установите значение true (значение по умолчанию), чтобы включить обычные перенаправления с максимальным количеством 5 перенаправлений.

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

Вы также можете передать ассоциативный массив, содержащий следующие пары ключ-значение:

  • max: (int, по умолчанию=5) максимальное количество разрешенных перенаправлений.

  • strict: (bool, default=false) Установите значение true для использования строгих перенаправлений. Строгие перенаправления в соответствии с RFC означают, что запросы POST перенаправления отправляются как POST-запросы вместо того, чтобы делать то, что делает большинство браузеров - перенаправлять POST-запросы с GET-запросами.

  • referer: (bool, по умолчанию=false) Установите значение true, чтобы включить добавление заголовка Referer при перенаправлении

  • протоколы: (массив, по умолчанию=['http', 'https']) Указывает, какие протоколы являются разрешены для запросов перенаправления.

  • on_redirect: (вызываемая) PHP-вызываемая функция, которая вызывается, когда происходит перенаправление встречается. Вызываемая переменная вызывается с исходным запросом и полученным ответом перенаправления. Любое возвращаемое значение из функции on_redirect игнорируется.

  • track_redirects: (bool) Если установлено значение true, каждый перенаправленный URI и статус будет отслеживаться в X-Guzzle-Redirect-History и X-Guzzle-Redirect-Status-History заголовках соответственно. Все URI и коды состояния будут храниться в том порядке, в котором были встречены перенаправления.

    Примечание: При отслеживании перенаправлений заголовок X-Guzzle-Redirect-History будет исключать URI первоначального запроса, а заголовок X-Guzzle-Redirect-Status-History будет исключать конечный код статуса.

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

Предупреждение

Эта опция имеет эффект только в том случае, если ваш обработчик имеет промежуточное ПО GuzzleHttp\Middleware::redirect промежуточное ПО. Это промежуточное ПО добавляется по умолчанию, когда клиент создается без обработчика, и добавляется по по умолчанию при создании обработчика с помощью GuzzleHttp\HandlerStack::create.

Примечание

Эта опция не имеет никакого эффекта при выполнении запросов с помощью GuzzleHttp\Client::sendRequest(). Для того, чтобы оставаться в соответствии с PSR-18, любой ответ перенаправления возвращается как есть.

auth

Резюме

Передаем массив параметров аутентификации HTTP для использования с запрос. Массив должен содержать имя пользователя в индексе [0], пароль в индекс [1], и, по желанию, вы можете указать встроенный тип аутентификации в index [2]. Передайте null, чтобы отключить аутентификацию для запроса.

Типы
  • массив
  • строка
  • null
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::AUTH

Ниже перечислены встроенные типы аутентификации:

основной
Используйте базовую аутентификацию HTTP в заголовке Authorization (настройка по умолчанию, если не указан ни один заголовок). указано).
$client->request('GET', '/get', ['auth' => ['username', 'password']]);
дайджест
Используйте digest-аутентификацию (должна поддерживаться обработчиком HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'digest']
]);

Примечание

В настоящее время это поддерживается только при использовании обработчика cURL, но создание замены, которая может быть использована с любым обработчиком HTTP, планируется планируется.

ntlm
Используйте аутентификацию Microsoft NTLM (должна поддерживаться обработчиком HTTP).
$client->request('GET', '/get', [
    'auth' => ['username', 'password', 'ntlm']
]);

Примечание

В настоящее время это поддерживается только при использовании обработчика cURL.

body

Резюме

Опция body используется для управления телом сущности. охватывающего запроса (например, PUT, POST, PATCH).

Типы
  • строка
  • fopen() ресурс
  • Psr\Http\Message\StreamInterface
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::BODY

Этот параметр может быть установлен на любой из следующих типов:

  • string

    // Вы можете отправлять запросы, которые используют строку в качестве тела сообщения.
    $client->request('PUT', '/put', ['body' => 'foo'])
    
  • ресурс, возвращенный из fopen()

    // Вы можете отправлять запросы, которые используют ресурс потока в качестве тела.
    $resource = \GuzzleHttp\Psr7\Utils::tryFopen('http://httpbin.org', 'r');
    $client->request('PUT', '/put', ['body' => $resource]);
    
  • Psr\Http\Message\StreamInterface

    // Вы можете отправлять запросы, использующие в качестве тела объект потока Guzzle
    $stream = GuzzleHttp\Psr7\Utils::streamFor('contents...');
    $client->request('POST', '/post', ['body' => $stream]);
    

Примечание

Этот параметр нельзя использовать с form_params, multipart или json.

cert

Резюме

Устанавливается в строку, чтобы указать путь к файлу, содержащему PEM в формате PEM сертификат клиентской стороны. Если требуется пароль, то задайте массив, содержащий путь к файлу PEM в первом элементе массива за которым следует пароль, требуемый для сертификата, во втором элементе массива элемент.

Типы
  • строка
  • массив
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::CERT

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

cookies

Резюме
Определяет, используются ли файлы cookie в запросе или нет, или какой банк cookie jar для использования или какие файлы cookie отправлять.
Типы
GuzzleHttp\Cookie\CookieJarInterface
По умолчанию
Нет
Постоянная
GuzzleHttp\RequestOptions::COOKIES

Вы должны указать опцию cookies как GuzzleHttp\Cookie\CookieJarInterface или false.

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

Предупреждение

Эта опция имеет эффект только в том случае, если ваш обработчик имеет GuzzleHttp\Middleware::cookies. Это промежуточное ПО добавляется по умолчанию, когда клиент создается без обработчика, и добавляется по по умолчанию при создании обработчика с помощью GuzzleHttp\default_handler.

Совет

При создании клиента вы можете установить опцию cookie по умолчанию в true для использования общей сессии cookie, связанной с клиентом.

connect_timeout

Резюме
Плавающая величина, описывающая количество секунд ожидания при попытке подключения к серверу. Используйте 0 для неограниченного ожидания (поведение по умолчанию).
Типы
float
По умолчанию
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]);

Примечание

Этот параметр должен поддерживаться HTTP-обработчиком, используемым для отправки запроса. connect_timeout в настоящее время поддерживается только встроенным обработчиком cURL обработчиком.

debug

Резюме

Установлено на true или установлено на поток PHP, возвращаемый fopen(), чтобы включить вывод отладки с помощью обработчика, используемого для отправки запроса. Например, при использовании cURL для передачи запросов, вербоза cURL CURLOPT_VERBOSE будет выдаваться. При использовании обёртки потока PHP, обёртка потока будут выдаваться уведомления. Если установлено значение true, вывод будет записан в STDOUT PHP. Если указан поток PHP, вывод будет записан в поток.

Типы
  • bool
  • fopen() ресурс
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::DEBUG

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

Выполнение приведенного выше примера выведет что-то вроде следующего:

* About to connect() to httpbin.org port 80 (#0)
*   Trying 107.21.213.98... * Connected to httpbin.org (107.21.213.98) port 80 (#0)
> GET /get HTTP/1.1
Host: httpbin.org
User-Agent: Guzzle/4.0 curl/7.21.4 PHP/5.5.7

< HTTP/1.1 200 OK
< Access-Control-Allow-Origin: *
< Content-Type: application/json
< Date: Sun, 16 Feb 2014 06:50:09 GMT
< Server: gunicorn/0.17.4
< Content-Length: 335
< Connection: keep-alive
<
* Connection #0 to host httpbin.org left intact

decode_content

Резюме

Укажите, будут ли Content-Encoding ответы (gzip, deflate и т.д.) автоматически декодируются.

Типы
  • string
  • bool
По умолчанию

true

Постоянная

GuzzleHttp\RequestOptions::DECODE_CONTENT

Этот параметр можно использовать для управления тем, как будут обрабатываться тела ответов с кодировкой содержимого обрабатываться. По умолчанию decode_content установлен в true, что означает, что любой gzipped или дефлированный ответ будет декодирован Guzzle.

Если установлено значение false, тело ответа никогда не декодируется, то есть байты проходят через обработчик без изменений.

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

Если установлено значение строки, байты ответа декодируются, и строковое значение предоставленное опции decode_content, передается в качестве Accept-Encoding заголовок запроса.

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

задержка

Резюме

Количество миллисекунд задержки перед отправкой запроса.

Типы
  • integer
  • float
По умолчанию

null

Постоянная

GuzzleHttp\RequestOptions::DELAY

expect

Резюме

Управляет поведением заголовка "Expect: 100-Continue"

Типы
  • bool
  • integer
По умолчанию

1048576

Постоянная

GuzzleHttp\RequestOptions::EXPECT

Установите значение true, чтобы включить заголовок "Expect: 100-Continue" для всех запросов. которые посылают тело. Установите значение false, чтобы отключить заголовок "Expect: 100-Continue" заголовок для всех запросов. Устанавливается в число, так что размер полезной нагрузки должен быть быть больше этого числа, чтобы отправить заголовок Expect. Установка значения число будет посылать заголовок Expect для всех запросов, в которых размер полезной нагрузки не может быть определен или где размер полезной нагрузки не может быть определен или тело не является перематываемым.

По умолчанию Guzzle добавляет заголовок "Expect: 100-Continue", когда размер тела запроса превышает 1 МБ и запрос использует HTTP/1.1.

Примечание

Эта опция действует только при использовании HTTP/1.1. Протоколы HTTP/1.0 и HTTP/2.0 протоколы не поддерживают заголовок "Expect: 100-Continue". Поддержка обработки заголовка "Expect: 100-Continue" должна быть реализована в HTTP-обработчиках Guzzle, используемых клиентом.

force_ip_resolve

Резюме
Установите значение "v4", если вы хотите, чтобы обработчики HTTP использовали только протокол ipv4 или "v6" для протокола ipv6.
Типы
строка
По умолчанию
null
Постоянная
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']);

Примечание

Этот параметр должен поддерживаться HTTP-обработчиком, используемым для отправки запроса. force_ip_resolve в настоящее время поддерживается только встроенными обработчиками cURL и обработчиками потоков.

form_params

Резюме
Используется для отправки application/x-www-form-urlencoded POST-запроса.
Типы
массив
Постоянная
GuzzleHttp\RequestOptions::FORM_PARAMS

Ассоциативный массив имен и значений полей формы, где каждое значение является строкой или массив строк. Устанавливает для заголовка Content-Type значение application/x-www-form-urlencoded, если заголовок Content-Type еще не указан. присутствует.

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

Примечание

form_params нельзя использовать с опцией multipart. Вам придется использовать либо одно, либо другое. Используйте form_params для application/x-www-form-urlencoded , и multipart для multipart/form-data запросов.

Этот параметр нельзя использовать с body, multipart, или json.

headers

Резюме
Ассоциативный массив заголовков для добавления в запрос. Каждый ключ - это имя заголовка, а каждое значение - строка или массив строк представляющие значения полей заголовка.
Типы
массив
По умолчанию
Нет
Постоянная
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']
    ]
]);

Заголовки могут быть добавлены в качестве опций по умолчанию при создании клиента. Когда заголовки используются как параметры по умолчанию, они применяются только в том случае, если создаваемый запрос не содержит конкретного заголовка. Это относится к запросам, переданным клиенту в методах send() и sendAsync(), и запросы созданные клиентом (например, request() и requestAsync()).

$client = new GuzzleHttp\Client(['headers' => ['X-Foo' => 'Bar']]);

// Will send a request with the X-Foo header.
$client->request('GET', '/get');

// Sets the X-Foo header to "test", which prevents the default header
// from being applied.
$client->request('GET', '/get', ['headers' => ['X-Foo' => 'test']]);

// Will disable adding in default headers.
$client->request('GET', '/get', ['headers' => null]);

// Will not overwrite the X-Foo header because it is in the message.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request);

// Will overwrite the X-Foo header with the request option provided in the
// send method.
use GuzzleHttp\Psr7\Request;
$request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']);
$client->send($request, ['headers' => ['X-Foo' => 'overwrite']]);

http_errors

Резюме
Установите значение false, чтобы отключить отбрасывание исключений при ошибках протокола HTTP. ошибки (т.е. ответы 4xx и 5xx). По умолчанию исключения выбрасываются, когда ошибки протокола HTTP.
Типы
bool
По умолчанию
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

Предупреждение

Эта опция имеет эффект только в том случае, если ваш обработчик имеет промежуточное ПО GuzzleHttp\Middleware::httpErrors промежуточное ПО. Это промежуточное ПО добавляется по умолчанию, когда клиент создается без обработчика, и добавляется по по умолчанию при создании обработчика с помощью GuzzleHttp\default_handler.

idn_conversion

Резюме

Поддержка интернационализированных доменных имен (IDN) (включена по умолчанию, если intl расширение доступно).

Типы
  • bool
  • int
По умолчанию

true если доступно расширение intl (и библиотека ICU версии 4.6+ для PHP 7.2+), false иначе

Постоянная

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

Включает/выключает поддержку ИДИ, также может использоваться для точного контроля путем комбинирования Константы IDNA_* (кроме IDNA_ERROR_*), см. параметр $options в параметре idn_to_ascii() документации для получения более подробной информации.

json

Резюме
Опция json используется для простой загрузки данных в кодировке JSON в качестве тело запроса. Заголовок Content-Type application/json будет добавлен, если в сообщении еще нет заголовка Content-Type.
Типы
Любой тип PHP, с которым может работать функция PHP json_encode().
По умолчанию
Нет
Постоянная
GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);

Вот пример использования промежуточного ПО tap, чтобы увидеть, какой запрос отправляется по проводу.

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

Примечание

Этот параметр запроса не поддерживает настройку заголовка Content-Type или какие-либо опции из json_encode() PHP. функции. Если вам нужно настроить эти параметры, то вы должны передать в запрос JSON-кодированные данные в запрос самостоятельно, используя body request и вы должны указать правильный заголовок Content-Type, используя опцию headers.

Этот параметр нельзя использовать с body, form_params, или multipart.

multipart

Резюме
Устанавливает тело запроса в форму multipart/form-data.
Типы
массив
Постоянная
GuzzleHttp\RequestOptions::MULTIPART

Значение multipart представляет собой массив ассоциативных массивов, каждый из которых содержит следующие пары ключ-значение:

  • name: (строка, обязательно) имя поля формы
  • contents: (StreamInterface/resource/string, требуется) Данные для использования в элементе формы.
  • headers: (массив) Необязательный ассоциативный массив пользовательских заголовков для использования с элементом формы.
  • filename: (строка) Необязательная строка для отправки в качестве имени файла в части.
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'
        ],
    ]
]);

Примечание

multipart нельзя использовать с опцией form_params. Вам необходимо использовать либо одну, либо другую. Используйте form_params для application/x-www-form-urlencoded , и multipart для multipart/form-data запросов.

Этот параметр нельзя использовать с body, form_params, или json.

on_headers

Резюме

Вызываемый объект, который вызывается, когда HTTP-заголовки ответа были получены, но тело еще не начало загружаться

Типы
  • callable
Постоянная

GuzzleHttp\RequestOptions::ON_HEADERS

Вызываемый объект принимает объект Psr\Http\Message\ResponseInterface. Если исключение будет выброшено вызываемым объектом, то обещание, связанное с ответом, будет будет отклонено с GuzzleHttp\Exception\RequestException, который обертывает исключение, которое было брошено.

Вам может понадобиться знать, какие заголовки и коды состояния были получены, прежде чем данные будут записаны на поглотитель.

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

Примечание

При написании обработчиков HTTP функция on_headers должна быть вызвана перед записью данных в тело ответа.

on_stats

Резюме

on_stats позволяет вам получить доступ к статистике передачи запроса и получить доступ к деталям передачи нижнего уровня обработчика связанного с вашим клиентом. on_stats - это вызываемый элемент, который вызывается когда обработчик завершает отправку запроса. Обратный вызов вызывается с передачей статистики о запросе, полученном ответе или возникшей ошибке. В эти данные включено общее количество времени, затраченное на отправку запроса. для отправки запроса.

Типы
  • callable
Постоянная

GuzzleHttp\RequestOptions::ON_STATS

Вызываемый объект принимает объект 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());
        }
    }
]);

прогресс

Резюме

Определяет функцию для вызова при достижении прогресса в передаче

Типы
  • callable
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::PROGRESS

Функция принимает следующие позиционные аргументы:

  • общее количество байтов, ожидаемое для загрузки, ноль, если неизвестно
  • количество байтов, загруженных на данный момент
  • общее количество байтов, ожидаемых к загрузке
  • количество байтов, загруженных на данный момент
// Send a GET request to /get?foo=bar
$result = $client->request(
    'GET',
    '/',
    [
        'progress' => function(
            $downloadTotal,
            $downloadedBytes,
            $uploadTotal,
            $uploadedBytes
        ) {
            //do something
        },
    ]
);

proxy

Резюме

Передайте строку, чтобы указать HTTP-прокси, или массив, чтобы указать разные прокси для разных протоколов.

Типы
  • строка
  • массив
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::PROXY

Передайте строку, чтобы указать прокси для всех протоколов.

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

Передайте ассоциативный массив для указания HTTP-прокси для определенных схем URI (т.е. "http", "https"). Предоставьте пару no ключ-значение для предоставления списка имен хостов, к которым не следует применять прокси-сервер.

Примечание

Guzzle автоматически заполнит это значение переменной вашего окружения NO_PROXY переменной окружения. Однако при предоставлении proxy опцию запроса, вы должны предоставить значение no, разобранное из proxy. переменной окружения NO_PROXY (например, 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
    ]
]);

Примечание

Вы можете предоставить URL-адреса прокси, содержащие схему, имя пользователя и пароль. Например, "http://username:[email protected]:10".

query

Резюме

Ассоциативный массив значений строки запроса или строка запроса для добавления к запрос.

Типы
  • массив
  • строка
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::QUERY

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

Строки запросов, указанные в опции query, будут перезаписывать все значения строк запросов, указанные в URI запроса.

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

read_timeout

Резюме
Плавающая величина, описывающая тайм-аут, который следует использовать при чтении потокового тела
Типы
float
По умолчанию
По умолчанию соответствует значению параметра default_socket_timeout PHP ini
Постоянная
GuzzleHttp\RequestOptions::READ_TIMEOUT

Таймаут применяется к отдельным операциям чтения потокового тела (когда включена опция 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());

sink

Резюме

Укажите, где будет сохранено тело ответа

Типы
  • строка (путь к файлу на диске)
  • fopen() ресурс
  • Psr\Http\Message\StreamInterface
По умолчанию

PHP temp stream

Постоянная

GuzzleHttp\RequestOptions::SINK

Передайте строку для указания пути к файлу, в котором будет храниться содержимое тела ответа:

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

Передайте ресурс, возвращенный из fopen() для записи ответа в поток PHP:

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

Передайте объект Psr\Http\Message\StreamInterface для передачи тела ответа в открытый поток 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]);

Примечание

Опция запроса save_to была устаревшей в пользу опции запроса sink. Предоставление опции save_to теперь является псевдонимом опции sink.

ssl_key

Резюме

Укажите путь к файлу, содержащему закрытый ключ SSL в формате PEM формате. Если требуется пароль, то задается массив, содержащий путь к SSL-ключу в первом элементе массива, за которым следует пароль, требуемый для сертификата во втором элементе.

Типы
  • строка
  • массив
По умолчанию

Нет

Постоянная

GuzzleHttp\RequestOptions::SSL_KEY

Примечание

ssl_key реализуется обработчиками HTTP. В настоящее время это поддерживается только поддерживается только обработчиком cURL, но может поддерживаться и другими сторонними обработчиками.

stream

Резюме
Установите значение true для потоковой передачи ответа вместо того, чтобы загружать его полностью заранее.
Типы
bool
По умолчанию
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);
}

Примечание

Поддержка потокового ответа должна быть реализована обработчиком HTTP, используемым клиентом. Эта опция может поддерживаться не всеми HTTP обработчиками, но интерфейс объекта ответа остается неизменным независимо от того, поддерживается ли он обработчиком или поддерживается ли он обработчиком или нет.

synchronous

Резюме
Установите значение true, чтобы сообщить HTTP-обработчикам, что вы намерены ожидать ответа. Это может быть полезно для оптимизации.
Типы
bool
По умолчанию
нет
Постоянная
GuzzleHttp\RequestOptions::SYNCHRONOUS

проверить

Резюме

Описывает поведение проверки SSL-сертификата при запросе.

  • Установите значение true, чтобы включить проверку SSL-сертификата и использовать пучок ЦС по умолчанию, предоставляемый операционной системой. CA пучок, предоставляемый операционной системой.
  • Установите значение false, чтобы отключить проверку сертификатов (это небезопасно!).
  • Устанавливается в строку, чтобы указать путь к пакету ЦС для включения проверки с использованием пользовательского сертификата.
Типы
  • bool
  • string
По умолчанию

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

Если вам не нужен конкретный пакет сертификатов, то Mozilla предоставляет часто используемый пакет CA, который можно загрузить здесь (предоставлено сопровождающим cURL). Как только у вас будет доступен пакет CA на диске, вы можете установить параметр PHP ini "openssl.cafile", указывающий на путь к файлу, что позволит вам опустить опцию запроса "verify". Более подробную информацию о SSL-сертификатах можно найти на сайте сайте cURL.

timeout

Резюме
Плавающая величина, описывающая общий тайм-аут запроса в секундах. Используйте 0 чтобы ждать неопределенное время (поведение по умолчанию).
Типы
float
По умолчанию
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'

version

Резюме
Версия протокола для использования в запросе.
Типы
строка, плавающая запятая
По умолчанию
1.1
Постоянная
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0
$request = $client->request('GET', '/get', ['version' => 1.0]);