03 - Опции запроса
Вы можете настроить запросы, созданные и переданные клиентом с использованием параметров запроса. Варианты запроса управления различными аспектами запроса в том числе, заголовки, параметры строки запроса, настройки времени ожидания, тело запроса, и многое другое.
Все приведенные ниже примеры используют следующий клиент:
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
allow_redirects
- Резюме
-
Описывает поведение переадресации из запроса
- Типы
-
- bool
- array
- По умолчанию
-
[ '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, default=5) Максимально допустимое количество переадресаций.
- strict: (bool, default=false) Установить в true для использования строгих переадресаций. Строгая RFC совместимая переадресация означает, что POST перенаправления посылаются запросы как запросы POST вместо того, что делают большинство браузеров, которые перенаправляют запросы POST как GET.
- referer: (bool, default=false) Установить в true чтобы включить добавление заголовка Referer при перенаправлении.
- protocols: (array, default=['http', 'https']) Указывает, какие протоколы разрешены для перенаправления запросов.
- on_redirect: (callable) Функция обратного вызова, которая вызывается, когда редирект перестал работать. Эта функция вызывается с первоначального запросом и ответом перенаправления, который был получен. Любое возвращаемое значение из функции on_redirect игнорируется.
- track_redirects: (bool) Если установлено значение
true
, каждый встречающийся URL перенаправления будет отслеживаться в заголовкеX-Guzzle-Redirect-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, // позволяют до 10 перенаправлений. 'strict' => true, // использовать "жесткие", RFC совместимые редиректы. 'referer' => true, // добавить заголовок Referrer 'protocols' => ['https'], // разрешить только HTTPS URL-адреса 'on_redirect' => $onRedirect, 'track_redirects' => true ] ]); echo $res->getStatusCode(); // 200 echo $res->getHeaderLine('X-Guzzle-Redirect-History'); // http://first-redirect, http://second-redirect, etc...
Этот параметр имеет эффект только, если ваш обработчик - GuzzleHttp\Middleware::redirect
промежуточного программного обеспечения. Это ПО промежуточного слоя добавляется по умолчанию, когда клиент создаются без обработчика, и добавляется по умолчанию при создании обработчика с GuzzleHttp\default_handler
.
auth
- Резюме
-
Передает массив параметров аутентификации HTTP для использования с запросом. Массив должен содержать имя пользователя с индексом [0], пароль с индексом [1], и вы можете по желанию предоставить встроенный тип аутентификации в индексе [2]. Передать
null
чтобы отключить проверку подлинности для запроса. - Типы
-
- array
- string
- null
- По умолчанию
-
нет
- Константа
-
GuzzleHttp\RequestOptions::AUTH
Встроенный типы аутентификации следующим образом:
- basic
- Использование базовой аутентификации HTTP в
Authorization
заголовке (настройка по умолчанию используется, если она не указана).
$client->request('GET', '/get',[ 'auth' => ['username', 'password'] ]);
- digest
- Использование дайджест-проверки подлинности (должен поддерживаться обработчиком HTTP).
$client->request('GET', '/get', [ 'auth' => ['username', 'password', 'digest'] ]);
Это в настоящее время поддерживается только при использовании обработчика cURL, но планируется создать эмулятор, который может быть использован с любым обработчиком HTTP.
body
- Резюме
-
Параметр
body
используется, чтобы управлять телом запроса с объектами включения (например,., PUT, POST, PATCH). - Типы
-
- string
fopen()
resourcePsr\Http\Message\StreamInterface
- По умолчанию
-
нет
- Константа
-
GuzzleHttp\RequestOptions::BODY
Этот параметр может быть установлен любым из следующих способов:
-
string
// Вы можете посылать запросы, которые // используют строку в теле сообщения. $client->request('PUT', '/put', ['body' => 'foo']);
- Ресурс возвращаемый
fopen()
// Вы можете посылать запросы, которые используют // поток ресурсов как body. $resource = fopen('http://httpbin.org', 'r'); $client->request('PUT', '/put', ['body' => $resource]);
Psr\Http\Message\StreamInterface
// Вы можете посылать запросы, которые используют объект // потока Guzzle как body $stream = GuzzleHttp\Psr7\stream_for('contents...'); $client->request('POST', '/post', ['body' => $stream]);
Этот параметр не может быть использован с form_params
, multipart
или json
cert
- Резюме
-
Установливает строку, с путем к файлу, содержащему PEM отформатированный сертификат на стороне клиента. Если требуется пароль, то устанавливается массив, содержащий путь к файлу PEM в первом элементе массива, и пароль, требуемый для сертификата во втором элементе массива.
- Типы
-
- string
- array
- По умолчанию
-
Нет
- Константа
-
GuzzleHttp\RequestOptions::CERT
$client->request('GET', '/', ['cert' => ['/path/server.pem', 'password']]);
cookies
- Резюме
- Определяет, будет ли или нет используются куки в запросе или какие куки использовать или какие куки для отправки.
- Типы
GuzzleHttp\Cookie\CookieJarInterface
- По умолчанию
- Нет
- Константа
GuzzleHttp\RequestOptions::COOKIES
Вы должны указать парамтр куков в виде GuzzleHttp\Cookie\CookieJarInterface
или false
.
$jar = new \GuzzleHttp\Cookie\CookieJar(); $client->request('GET', '/get', ['cookies' => $jar]);
Этот параметр имеет эффект только, если ваш обработчик имеет в GuzzleHttp\Middleware::cookies
промежуточное программное обеспечение. Это ПО промежуточного слоя добавляется по умолчанию, когда клиент создаются без обработчика, и добавляется по умолчанию при создании обработчика с GuzzleHttp\default_handler
.
При создании клиента, вы можете установить опцию куки по умолчанию в true
, чтобы использовать общий сеанс куков, связанный с клиентом.
connect_timeout
- Резюме
- Float описывающее количество секунд ожидания при попытке подключения к серверу. Используйте
0
, чтобы ждать до бесконечности (поведение по умолчанию). - Типы
- float
- По умолчанию
0
- Константа
GuzzleHttp\RequestOptions::CONNECT_TIMEOUT
// Тайм-аут, если клиент не может подключиться к серверу // в 3,14 секунды. $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()
resource
- По умолчанию
-
Нет
- Константа
-
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, etc.) автоматически декодировать. - Типы
-
- string
- bool
- По умолчанию
-
true
- Константа
-
GuzzleHttp\RequestOptions::DECODE_CONTENT
Эта опция может быть использована для управления обработкой декодирования тела ответа. По умолчанию , decode_content
установлено значение true, то есть любое gzipped или deflated состояние ответа будет декодированно Guzzle.
Если установлено значение false
,тело ответа никогда не декодируется, а это означает байты проходят через обработчик без изменений.
// Запрошены gzip ованные данные, но не расшифровывать их его во время загрузки $client->request('GET', '/foo.js', [ 'headers' => ['Accept-Encoding' => 'gzip'], 'decode_content' => false ]);
При установке строки, байты ответа декодируются а значение строки предоставляет параметры decode_content
, они передается в параметре Accept-Encoding
запроса.
// Передать "gzip" в качестве Accept-Encoding заголовка. $client->request('GET', '/foo.js', ['decode_content' => 'gzip']);
delay
- Резюме
-
Число миллисекунд задержки перед отправкой запроса.
- Типы
-
- 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 посылается, при превышении телом этого значенияr. При установки числа, заголовок 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, используемых клиентом..
form_params
- Резюме
- Используется для отправки application/x-www-form-urlencoded POST запроса.
- Типы
- array
- Константа
GuzzleHttp\RequestOptions::FORM_PARAMS
Ассоциативный массив имен полей формы и значений, где каждое значение является строкой или массивом строк. Устанавливает заголовок Content-Type для application/x-www-form-urlencoded когда еше нет установлен заголовок Content-Type header.
$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
- Резюме
- Ассоциативный массив заголовков, чтобы добавить к запросу. Каждый ключ является именем заголовка, а каждое значение представляет собой строку или массив строк, представляющих значения полей заголовка.
- Типы
- array
- Значения по умолчанию
- Нет
- Константа
GuzzleHttp\RequestOptions::HEADERS
// Установить различные заголовки к запросу $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']]); // Будет отправлять запрос с заголовком X-Foo. $client->request('GET', '/get'); // Устанавливает заголовок X-Foo в "test", который заменяет заголовок по умолчанию // отменяя его. $client->request('GET', '/get', ['headers' => ['X-Foo' => 'test']); // Будет отключать добавление заголовков по умолчанию. $client->request('GET', '/get', ['headers' => null]); // Не будет перезаписывать заголовок X-Foo, потому что это в сообщении. use GuzzleHttp\Psr7\Request; $request = new Request('GET', 'http://foo.com', ['X-Foo' => 'test']); $client->send($request); // Будет перезаписывать заголовок X-Foo с параметром запроса, предоставленной в // методе send. 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'); // Бросает GuzzleHttp\Exception\ServerException $res = $client->request('GET', '/status/500', ['http_errors' => false]); echo $res->getStatusCode(); // 500
Этот параметр имеет эффект только, если ваш обработчик имеет в GuzzleHttp\Middleware::httpErrors
промежуточное программное обеспечение. Это ПО промежуточного слоя добавляется по умолчанию, когда клиент создаются без обработчика, и добавляется по умолчанию при создании обработчика с GuzzleHttp\default_handler
.
json
- Summary
- Опция
json
используется для легкой загрузки данных в формате JSON кодирования тела запроса. В заголовок Content-Type ставитсяapplication/json
, если нет заголовка Content-Type в сообщении. - Типы
- Любой тип PHP, который может работать на функцией РНР
json_encode()
. - По умолчанию
- Нет
- Константа
GuzzleHttp\RequestOptions::JSON
$response = $client->request('PUT', '/put', ['json' => ['foo' => 'bar']]);
Вот пример использования tap
промежуточного программного обеспечения, чтобы увидеть, что запрос передается по проводам.
use GuzzleHttp\Middleware; // Захватить экземпляр обработчика клиента. $clientHandler = $client->getConfig('handler'); // Создание промежуточного программного обеспечения, который выводит части запроса $tapMiddleware = Middleware::tap(function ($request) { echo $request->getHeader('Content-Type'); // application/json echo $request->getBody(); // {"foo":"bar"} }); $response = $client->request('PUT', '/put', [ 'json' => ['foo' => 'bar'], 'handler' => $tapMiddleware($clientHandler) ]);
Этот параметр запроса не поддерживает настройки Content-Typeзаголовка или любой из вариантов PHP функции json_encode() . Если вам необходимо настроить эти параметры, то вы должны передать JSON закодированные данные в запрос самостоятельно, используя параметр запроса body
и вы должны указать правильный заголовок Content-Type используя параметр запроса headers
.
Этот параметр не может быть использован с body
, form_params
, или multipart
multipart
- Резюме
- Приводит тело запроса к multipart/form-data форме.
- Типы
- array
- Константа
GuzzleHttp\RequestOptions::MULTIPART
Значение multipart
является массивом ассоциативных массивов, каждый из которых содержит следующие пары ключ-значение:
name
: (string, обязательно) имя поля формыcontents
: (StreamInterface/resource/string, обязательно) Данные, предназначенные для использования в элементе формы.headers
: (array) Необязательный ассоциативный массив пользовательских заголовков используемых с элементом формы.filename
: (string) Необязательная строка для отправки в качестве имени файла в части.
$client->request('POST', '/post', [ 'multipart' => [ [ 'name' => 'foo', 'contents' => 'data', 'headers' => ['X-Baz' => 'bar'] ], [ 'name' => 'baz', 'contents' => fopen('/path/to/file', 'r') ], [ 'name' => 'qux', 'contents' => fopen('/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\ResponseInterface
объект. Если функцией выбрасывается исключение, то обещание, связанное с ответом будет отклонено с GuzzleHttp\Exception\RequestException
что обрабатывает исключение, которое было брошено.
Вы, возможно, должны знать, какие заголовки и коды статусов были получены, прежде чем данные могут быть записаны в приемник.
// Отклонить ответы, которые больше, чем 1024 байт. $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()); // Вы должны проверить, если ответ был получен перед использованием // объекта Ответа. if ($stats->hasResponse()) { echo $stats->getResponse()->getStatusCode(); } else { // Данные обработчика Ошибок специфичны. Вы должны будете знать, что // тип данных об ошибках обработчика использует перед использованием этого // значения. var_dump($stats->getHandlerErrorData()); } } ]);
proxy
- Резюме
-
Передаёт строку, чтобы указать HTTP прокси-сервер или массив, чтобы задавать различные прокси-серверы для различных протоколов.
- Типы
-
- string
- array
- По умолчанию
-
Нет
- Константа
-
GuzzleHttp\RequestOptions::PROXY
Передаёт строку, чтобы указать прокси-сервер для всех протоколов.
$client->request('GET', '/', ['proxy' => 'tcp://localhost:8125']);
Передаёт ассоциативный массив, чтобы указать HTTP прокси для конкретных схем URI (т.е., "HTTP", "HTTPS"). Передает no
парам ключ => значение, чтобы предоставить список имен хостов, которые не должны быть переданы серверу.
Guzzle автоматически заполнит это значение с NO_PROXY
переменной окружения вашей среды. Тем не менее, при предоставлении параметра запроса proxy
, у вас ест возможность добвасить no
значения прочитав из NO_PROXY
переменных окружения (например., explode(',', getenv('NO_PROXY'))
).
$client->request('GET', '/', [ 'proxy' => [ 'http' => 'tcp://localhost:8125', // Использовать этот прокси-сервер с "HTTP" 'https' => 'tcp://localhost:9124', // Использовать этот прокси-сервер с "https", 'no' => ['.mit.edu', 'foo.com'] // Не использовать прокси-сервер с этими ] ]);
Вы можете предоставить прокси URL-адреса, которые содержат схемы, имя пользователя и пароль. Например, "http://username:password@192.168.16.1:10"
.
query
- Резюме
-
Ассоциативный массив значений строки запроса или строки запроса, чтобы добавить к запросу.
- Типы
-
- array
- string
- По умолчанию
-
Нет
- Константа
-
GuzzleHttp\RequestOptions::QUERY
// Отправить запрос GET к /get?foo=bar $client->request('GET', '/get', ['query' => ['foo' => 'bar']]);
Строки запроса, указанные в параметре запроса query
перепишет значения строки запроса, поставляемые в URI запроса.
// Отправить запрос GET к /get?foo=bar $client->request('GET', '/get?abc=123', ['query' => ['foo' => 'bar']]);
sink
- Резюме
-
Указывает, где будет сохранено тело ответа.
- Типы
-
- string путь к файлу на диске)
fopen()
resourcePsr\Http\Message\StreamInterface
- По умолчанию
-
Поток временного файла PHP
- Константа
-
GuzzleHttp\RequestOptions::SINK
Передаёт строку, чтобы указать путь к файлу, который будет хранить содержимое тела ответа:
$client->request('GET', '/stream/20', ['sink' => '/path/to/file']);
Передаёт ресурс возвращенный из fopen()
для записи ответа в PHP поток:
$resource = fopen('/path/to/file', 'w'); $client->request('GET', '/stream/20', ['sink' => $resource]);
Передаёт объект Psr\Http\Message\StreamInterface
для потоковой передачи тела ответа в открытый PSR-7 поток
$resource = fopen('/path/to/file', 'w'); $stream = GuzzleHttp\Psr7\stream_for($resource); $client->request('GET', '/stream/20', ['save_to' => $stream]);
Вариант запроса save_to
является устаревшим в пользу варианта запроса sink
. Для совместимости, параметр save_to
теперь псевдоним sink
.
ssl_key
- Резюме
-
Указывает путь к файлу, содержащему частный ключ SSL в формате PEM.Если требуется пароль,то задается массив, содержащий путь к ключу SSL в первом элементе массива, за которым следует пароль, требуемые для сертификата во втором элементе.
- Типы
-
- string
- array
- По умолчанию
-
Нет
- Константа
-
GuzzleHttp\RequestOptions::SSL_KEY
ssl_key
осуществляется обработчиком HTTP. Это в настоящее время поддерживается только обработчиком cURL но может быть поддержан другими обработчиками третьей части.
stream
- Резюме
- Установить
true
для потокового ответа, а не загружать все зараннее. - Типы
- bool
- По умолчанию
false
- Константа
GuzzleHttp\RequestOptions::STREAM
$response = $client->request('GET', '/stream/20', ['stream' => true]); // Прочитайте байты потока, пока конец потока не будет достигнут $body = $response->getBody(); while (!$body->eof()) { echo $body->read(1024); }
Поддержка ответа потоковаой передачи должна быть реализована обработчиком HTTP, используемым клиентом. Эта опция не могла бы поддерживаться каждым обработчиком HTTP, но интерфейс объекта ответа остается тем же независимо от того, поддерживается ли это обработчиком.
synchronous
- Резюме
- Установить значение True, чтобы сообщить http-обработчикам, что вы намерены ждать ответа. Это может быть полезно для оптимизации.
- Типы
- bool
- По умолчанию
- Нет
- Константа
GuzzleHttp\RequestOptions::SYNCHRONOUS
verify
- Резюме
-
Описывает поведение проверки сертификата SSL из запроса.
- Установить
true
включить проверку сертификата SSL и использовать CA по умолчанию пакет предоставленный операционной системой. - Установить
false
чтобы отключить проверку сертификата (это небезопасно!). - Установить строку, чтобы указать путь к CA связи для того, чтобы выполнить проверку с помощью пользовательского сертификата.
- Установить
- Типы
-
- bool
- string
- По умолчанию
-
true
- Константа
-
GuzzleHttp\RequestOptions::VERIFY
// Использовать пакет CA системы (это - настройка по умолчанию), $client->request('GET', '/', ['verify' => true]); // Использовать сертификат пользовательского SSL на диске. $client->request('GET', '/', ['verify' => '/path/to/cert.pem']); // Отключить проверку полностью (не делайте этого!). $client->request('GET', '/', ['verify' => false]);
Не все системы имеют известный CA пакет на диске. Например, Windows и OS X не имеют одно общее место для CA пакетов. При установке "verify" в true
, Guzzle будет делать все возможное, чтобы найти наиболее подходящий CA пакет в вашей системе. При использовании cURL или потоковой обертки PHP на версиях PHP> = 5.6, это происходит по умолчанию. При использовании потоковой обертки PHP на версиях <5.6, Guzzle пытается найти Ваш пакет CA в следующем порядке:
- Проверит, установлен ли
openssl.cafile
в файле php.ini. - Проверит, установлен ли
curl.cainfo
в вашем файле php.ini. - Проверит, существует ли
/etc/pki/tls/certs/ca-bundle.crt
(Redhat, CentOS, Fedora, предоставленной, с помощью пакета CA-сертификатов) - Проверит, существует ли
/etc/ssl/certs/ca-certificates.crt
exists (Ubuntu, Debian;Fedora, предоставленной, с помощью пакета CA-сертификатов) - Проверит, существует ли
/usr/local/share/certs/ca-root-nss.crt
exists (FreeBSD; Fedora, предоставленной, с помощью пакета CA-сертификатов) - Проверит, существует ли
/usr/local/etc/openssl/cert.pem
(OS X; обеспечивается домашней папкой) - Проверит, существует ли
C:\windows\system32\curl-ca-bundle.crt
(Windows) - Проверит, существует ли
C:\windows\curl-ca-bundle.crt
(Windows)
Результаты этого поиска кэшируется в памяти, так что последующие вызовы в том же самом процессе вернутся очень быстро Тем не менее, при отправке только одного запроса на процесс в чем-то вроде Apache, вы должны рассмотреть вопрос о создании переменной среды openssl.cafile
на путь на диске к файлу, так что весь этот процесс будет пропущен.
Если вам не нужен конкретный пакет сертификатов, то Mozilla предоставляет обычно используемый CA пакет, который можно скачать здесь (предоставленный сопровождающим cURL). После того, как у вас есть CA сертификат на диске, вы можете установить "openssl.cafile" PHP INI настройки, чтобы указать на путь к файлу, что позволяет опустить "verify" вариант запроса. Намного более подробную информацию о SSL-сертификатов можно найти на веб-сайте cURL website.
timeout
- Резюме
- Float описывающее тайм-аут запроса в секундах. Используйте
0
ждать до бесконечности (поведение по умолчанию). - Типы
- float
- По умолчанию
0
- Константа
GuzzleHttp\RequestOptions::TIMEOUT
// Тайм-аут, если сервер не возвращает ответ в 3,14 секунды. $client->request('GET', '/delay/5', ['timeout' => 3.14]); // PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\RequestException'
version
- Резюме
- Версия протокола для использования с запросом.
- Типы
- string, float
- По умолчанию
1.1
- Константа
GuzzleHttp\RequestOptions::VERSION
// Force HTTP/1.0 $request = $client->request('GET', '/get', ['version' => 1.0]);