guzzlehttp/guzzle
Guzzle is a PHP HTTP client for sending sync or async requests with an easy API. Built on PSR-7 and PSR-18, supports middleware, cookies, streaming uploads/downloads, and JSON. Transport-agnostic for flexible integrations.
guzzlehttp/promises version constraint to ^3.0.1StreamHandler resolving numeric IPv4 hosts differently from cURL handlers on macOS and WindowsStreamHandler TLS peer names and proxy authorities for numeric IPv4 hosts on all platformsHost header values that are not printable ASCII (GHSA-v5mv-p594-2x33)Host header after client URI rewrites (GHSA-v5mv-p594-2x33)SensitiveParameter metadata to credential-bearing parameters so PHP 8.2+ redacts their values in exception tracesMultiplexing::NONE support as a client, cURL multi handler, and conditional request optionConnectTimeoutException for connect-phase timeouts, extending ConnectExceptionNetworkException for no-response network failuresNetworkTimeoutException for no-response transport timeoutsResponseTransferException, with ResponseTimeoutException for response-transfer timeoutsrequest_factory, response_factory, stream_factory, and uri_factory request optionsclose() lifecycle methods to the built-in cURL handlers and concrete cURL factoryHandlerClosedException for pending transfers rejected by CurlMultiHandler::close()TransportSharing::PERSISTENT_PREFER and TransportSharing::PERSISTENT_REQUIRE)ProxyOptions for proxy option resolutionResponseException for request failures with responses__Secure- and __Host- prefix requirements on response cookiesFileCookieJar and SessionCookieJar persistence against unsafe unserializationFileCookieJar cookie files to owner-only permissionsRuntimeExceptionUtils time, timeout, IDN, and environment helpers to dedicated internal classesguzzlehttp/promises version constraint to ^3.0guzzlehttp/psr7 version constraint to ^3.0Content-Type boundary parameters when requiredSetCookie methodsstring return type to SetCookie::__toString()force_ip_resolve, protocols, and delay ranges at the client boundaryno entry as final even without a scheme-specific proxy entryRequestException, not InvalidArgumentException, for an unavailable proxy or TLS featureno_proxy/NO_PROXY from the environment in the stream handler, including * to disable proxyinghttps:// or SOCKS proxy in the stream handler, matching its proxy option behaviorProxy-Authorization on every routeProxy-Authorization field, including empty, on stream proxiesCURLOPT_PROXYHEADER without proxy header separation supporton_headers callbacksPool iterable key as a trailing argument to per-request observer callbacksidn_conversion, retries, and built-in handler on_stats option values before usequery and form_params optionsbody optionExpect: 100-Continue injection to HTTP/1.1 requests onlySetCookie constructor field types instead of coercing themnull as an omitted path or name when clearing cookiesauth request option arraysauth request optionauth request option when following cross-origin redirectsReferer header to the origin on cross-origin redirectsHandlerStack::remove() argumentsPool request collections to be iterableDomain attribute as host-only cookiesMax-Age over Expires when both attributes are presentCookieJar::getCookieByName()Max-Age cookie values instead of truncating themContent-Length and combinations with Transfer-EncodingTransfer-Encoding metadata and coalesced framing in progress on newer PHPLocation values in BadResponseExceptioncrypto_method option through the SSL context so it consistently controls the minimum TLS versionTransferException and its subclassesNetworkExceptionConnectException, with connect timeouts as ConnectTimeoutExceptionNetworkException, with timeouts as NetworkTimeoutExceptionResponseExceptionResponseTransferExceptionsink option or reads trailing bytes for responses that cannot carry a bodyContent-Length, including decoded gzip/deflateContent-Length casings and preserve encoded values on decoded responsesResponseException101 Switching Protocols before the final responseResponseException and skip non-seekable sink rewindsResponseExceptionGuzzleHttp\Exception\InvalidArgumentException for invalid built-in handler optionssink, and HTTP/3 setup failures as RequestExceptionConnectTimeoutException for connect timeoutsNetworkTimeoutException for cURL no-response timeout errorsResponseTimeoutException for response-aware transfer timeoutstimeout option as a total transfer deadline in the stream handler when it buffers the responsetimeout deadlinedefault_socket_timeout ini setting in the stream handlerread_timeout as an idle timeout for every request stage, defaulting to 60 secondsconnect_timeout set to 0 disabling itUser-Agent and From header values from the user_agent and from ini settingsRequestException or ResponseException by phaseResponseException or RequestException by phasesink as caller-owned in the built-in cURL and stream handlersLocation headersprogress callbacks to abort transfers with truthy return valuesprogress callback arguments to integer byte countsprogress throwables with ResponseException when a response exists, otherwise RequestExceptionon_statsCURLOPT_XFERINFOFUNCTION for built-in cURL progress callbacks when availableMessageFormatter final and required Middleware::log() formatters to implement MessageFormatterInterfaceCurlFactory, CurlHandler, CurlMultiHandler, MockHandler, and StreamHandler finalGuzzleHttp\Handler\Proxy finalon_trailers callbacks, reject non-callable on_trailers values, and wrap on_trailers callback exceptions in ResponseExceptionmultiplex defaults to Multiplexing::WAIT)CURLOPT_PIPEWAIT cURL option at the multiplex request optionCURLMOPT_PIPELINING in favour of the multiplex cURL multi handler optionCURLOPT_HTTPAUTH mask permits NTLMselect_timeout cURL multi handler option valuesSet-Cookie strings with RFC 6265 whitespace trimmingSet-Cookie attributes that require a value when parsingClient::__call(); use the typed HTTP verb methods or request()/requestAsync()ClientInterface::getConfig(); the concrete Client::getConfig() remains availableGUZZLE_CURL_SELECT_TIMEOUT environment variable; use CurlMultiHandler's select_timeout optionhandler request option; configure the handler on the clientCurlMultiHandler::$_mh; pass CURLMOPT_* values through constructor options insteadRedirectMiddleware::$defaultSettings; use RedirectMiddleware::DEFAULT_SETTINGSRetryMiddleware::exponentialDelay() methodRequestException::wrapException() methodUtils::describeType() methodUtils::jsonDecode() and Utils::jsonEncode() in favor of native JSON functionsGuzzleHttp namespace functions in favor of native or class equivalentsUtils::defaultCaBundle(); rely on the system trust store or pass a bundle path via the verify optionHandlerStack::__toString()RequestException::getHandlerContext() and ConnectException::getHandlerContext()RequestException; use ResponseExceptionUtils::isHostInNoProxy(); use ProxyOptions helpers for Guzzle 8 no-proxy matchingUtils::isUriInNoProxy(); use ProxyOptions::isUriInNoProxy()Handler\Proxy::wrapTlsFallback(); the default handler stack selects the cURL or stream handler by TLS support automaticallyCookie headers (GHSA-f283-ghqc-fg79)Referer headers generated for redirects (GHSA-h95v-h523-3mw8)Multiplexing::NONE support as a client, cURL multi handler, and conditional request optionguzzlehttp/psr7 version constraint to ^2.13Content-LengthCURLOPT_SHARE cURL option when named connection caps are configuredCURLOPT_PRE_PROXY and opaque share handlesUtils::jsonDecode() and Utils::jsonEncode() in favor of native JSON functionsCURLMOPT_PIPELINING in the cURL multi handler options arrayCURLOPT_PROXYHEADER without cURL proxy header separation supportContent-Length and Transfer-Encoding when redirects discard the request bodydelay request option to followed redirectsguzzlehttp/psr7 version constraint to ^2.12.5@ separatorsstream => true) on cap-configured stream handlersoptions valuesCURLOPT_HTTPAUTH mask permits NTLMCURLMOPT_PIPELINING when combined with explicit multiplexingon_stats callback throwson_trailers callback is configuredon_trailers callback before starting a cURL transferon_trailers request option on the stream handler, which cannot observe trailerson_trailers request option to expose parsed HTTP response trailersmultiplex request option with Multiplexing::* modes to control or require HTTP/2 multiplexingmultiplex requests when CURLMOPT_PIPELINING disables multiplexingmax_host_connections and max_total_connections client and cURL multi handler optionsCURLOPT_SHARE when combined with authenticated SOCKS proxy configurationCURLOPT_CERTINFO optionCURLOPT_PIPEWAIT cURL option in favour of the multiplex request optionselect_timeout cURL multi handler option valuesguzzlehttp/promises version constraint to ^2.5.1guzzlehttp/psr7 version constraint to ^2.12.4no_proxy valuesRuntimeExceptioncrypto_method_max request option to cap the maximum TLS protocol versionCURLOPT_SHARE when combined with authenticated HTTP/HTTPS proxy tunnel configurationCURLOPT_PREREQFUNCTION callbacks when defined by PHP cURLcrypto_method requests to the stream handler when cURL cannot select TLS 1.2guzzlehttp/psr7 version constraint to ^2.12.3Max-Age so a very large value no longer overflows to an already-expired timestampCookieJar conflict resolution so distinct numeric-string names don't overwriteDomain has a trailing dot on the origin host instead of silently discarding itStreamHandler hard-failing on bracketed IPv6 literal hosts when force_ip_resolve is setPath comparison so CookieJar::clear() with a numeric path keeps a distinct-path cookieDomain, Max-Age, path, and name valuesdecode_content handling for falsey string valuesguzzlehttp/psr7 version constraint to ^2.12.1Domain attributes as match-all (GHSA-cwxw-98qj-8qjx)RequestOptions constants for curl, retries, and stream_contextguzzlehttp/psr7 version constraint to ^2.12proxy request option makes a decisionPsr7\Utils::redactUserInfo()handler option, which will be ignored in 8.0CURLOPT_PROXYTYPE cURL request option; set the proxy type via a scheme-prefixed proxy URLntlm as a built-in auth typeUtils::describeType()query and form_params options; 8.0 rejects thembody option; 8.0 rejects themno list matches being re-proxied through environment-configured proxies by libcurlno list and NO_PROXY matching to support IP CIDR ranges, matching libcurltransport_sharing, matching other unknown request optionsproxy request option's no value as a comma-delimited stringprotocols request option to restrict allowed URI schemes for request transferscert_type and ssl_key_type request options for TLS certificate and private-key file typesssl_key request optiontransport_sharing client and cURL handler optionsguzzlehttp/promises version constraint to ^2.5guzzlehttp/psr7 version constraint to ^2.11SetCookie instances to be stored without wildcard request matchingCurlMultiHandler destructors from throwing during cleanupPool request collections, which will be rejected in 8.0headers request option values, which will be rejected in 8.0headers request option value arrays, which will be rejected in 8.0CURLOPT_SHARE, which will be rejected in 8.0idn_conversion request option values, which will be rejected in 8.0RequestException::wrapException(), which will be removed in 8.0RetryMiddleware::exponentialDelay(), which will be removed in 8.0CurlMultiHandler now rejects the promise when CurlFactory::finish() throws, preserving sibling transfersSetCookie now normalizes unparseable Expires values to null instead of falsegzip/deflate truncation by dropping invalid Content-LengthConnectExceptionoptions() to uppercase inferred HTTP methodsguzzlehttp/promises version constraint to ^2.3guzzlehttp/psr7 version constraint to ^2.8CurlMultiHandler to avoid busy wait if possibleguzzlehttp/psr7 v1call_user_func* with native callsCurlFactory object destructionAllowDynamicProperties in CurlMultiHandlerguzzlehttp/promises v2SetCookie::fromString MaxAge deprecation warning and skip invalid MaxAge values'0' bodyNO_PROXY settings so that setting the proxy option to no overrides the env variableguzzlehttp/psr7 version constraint to ^1.9.1 || ^2.4.5CURLOPT_HTTPAUTH option not cleared on change of originforce_ip_resolvesink on HEAD requests.GuzzleHttp\MessageFormatterInterfaceGuzzleHttp has been deprecated. Use static methods on Utils instead.ClientInterface::getConfig()Client::getConfig()Client::__call()Utils::defaultCaBundle()CurlFactory::LOW_CURL_VERSION_NUMBERNo changes since 7.0.0-rc1.
Utils class instead of functions in the GuzzleHttp namespace. #2546ClientInterface::MAJOR_VERSION #2583getenv function when unsafe #2531Client::get(), Client::head(), Client::patch() etc #2529ConnectException extends TransferException #2541pool_size #2528The diff might look very big but 95% of Guzzle users will be able to upgrade without modification. Please see the upgrade document that describes all BC breaking changes.
BadResponseException::__construct() #2427null as URI to Client::request() and Client::requestAsync() #2461curl_multi_init. #2287null to the header option. #2132RetryMiddleware did not do exponential delay between retires due unit mismatch. #2132ClientInterface::VERSIONguzzle.phar was created in 6.4.0 due expired API token. This release will fix thatparent::__construct() to FileCookieJar and SessionCookieJarRequestException::getResponseBodySummary() #2081GuzzleHttp\Exception\InvalidArgumentException #2163GuzzleHttp\_current_time() to use hrtime() if that function exists. #2242appconnect_time in TransferStats #2284CookieJar #2335MockHandler so we can test transfer time #2362on_headers option in MockHandler #1580read_timeout option #1611CURLOPT_CAPATH and CURLOPT_CAINFO properly #1684\GuzzleHttp\Promise\rejection_for function instead of object init #1827Content-Length in PHP StreamHandler to avoid timeouts when
a server does not honor Connection: close.GuzzleHttp\json_encode and GuzzleHttp\json_decode.
https://github.com/guzzle/guzzle/pull/1389http_build_query for HHVM workaround.
https://github.com/guzzle/guzzle/pull/1367sink.
https://github.com/guzzle/guzzle/pull/1292on_stats request option to provide access to transfer
statistics for requests. https://github.com/guzzle/guzzle/pull/1202= inside of quotes in Cookies.
https://github.com/guzzle/guzzle/pull/1232body_as_string setting
https://github.com/guzzle/guzzle/pull/1201form_params and query now always uses the & separator.
https://github.com/guzzle/guzzle/pull/1163curl_reset.Content-Encoding header may be removed an the
Content-Length modified to reflect the message size after removing the
encoding.form_params and
multipart in the same request.query request option where the &
separator was missing.body is provided as an array. Please
use form_params or multipart instead.multipart and form_params request options.synchronous request option.on_headers request option.expect handling.default to true. This is no longer
required now that the cURL loop is not ticked for async requests.sink is valid if saving to a file.GuzzleHttp\RequestOptions to allow request options to be applied
using constants.$maxHandles has been removed from CurlMultiHandler.MultipartPostBody is now part of the guzzlehttp/psr7 package.save_toAbstractRequestEvent::getTransaction() as public.Utils::getDefaultHandler()GuzzleHttp\Client::getDefaultUserAgent as deprecated.AppliesHeadersInterface to make applying headers to a request based
on the body more generic and not specific to PostBodyInterface.null when creating a request with a client will
ensure that the option is not set. This allows you to overwrite default
request options on a per-request basis.
See https://github.com/guzzle/guzzle/pull/937.protocols array in the allow_redirects request option."0" is now an allowed URI path. See
https://github.com/guzzle/guzzle/pull/935.Query no longer typehints on the $query argument in the constructor,
allowing for strings and arrays.end event are now correctly wrapped with Guzzle
specific exceptions if necessary.This change updates query strings so that they are treated as un-encoded values by default where the value represents an un-encoded value to send over the wire. A Query object then encodes the value before sending over the wire. This means that even value query string values (e.g., ":") are url encoded. This makes the Query class match PHP's http_build_query function. However, if you want to send requests over the wire using valid query string characters that do not need to be encoded, then you can provide a string to Url::setQuery() and pass true as the second argument to specify that the query string is a raw string that should not be parsed or encoded (unless a call to getQuery() is subsequently made, forcing the query-string to be converted into a Query object).
Added a trailing \r\n to multipart/form-data payloads. See
https://github.com/guzzle/guzzle/pull/871
Added a GuzzleHttp\Pool::send() convenience method to match the docs.
Status codes are now returned as integers. See https://github.com/guzzle/guzzle/issues/881
No longer overwriting an existing application/x-www-form-urlencoded header
when sending POST requests, allowing for customized headers. See
https://github.com/guzzle/guzzle/issues/877
Improved path URL serialization.
rawString argument is provided when setting the query
string on a URL: Now allowing many more characters to be present in the
query string without being percent encoded. See
https://datatracker.ietf.org/doc/html/rfc3986#appendix-ABugfix release.
getResponse method of
these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867Adding support for non-blocking responses and some minor API cleanup.
guzzlehttp/guzzle-ring.GuzzleHttp\Pool which implements FutureInterface and transfers
requests concurrently using a capped pool size as efficiently as possible.hasListeners() to EmitterInterface.GuzzleHttp\ClientInterface::sendAll and marked
GuzzleHttp\Client::sendAll as deprecated (it's still there, just not the
recommended way).The breaking changes in this release are relatively minor. The biggest thing to look out for is that request and response objects no longer implement fluent interfaces.
return $this) from requests,
responses, GuzzleHttp\Collection, GuzzleHttp\Url,
GuzzleHttp\Query, GuzzleHttp\Post\PostBody, and
GuzzleHttp\Cookie\SetCookie. This blog post provides a good outline of
why I did this: https://ocramius.github.io/blog/fluent-interfaces-are-evil/.
This also makes the Guzzle message interfaces compatible with the current
PSR-7 message proposal.GuzzleHttp\Utils using camelCase. GuzzleHttp\json_decode
moved to GuzzleHttp\Utils::jsonDecode. GuzzleHttp\get_path moved to
GuzzleHttp\Utils::getPath. GuzzleHttp\set_path moved to
GuzzleHttp\Utils::setPath. GuzzleHttp\batch should now be
GuzzleHttp\Pool::batch, which returns an objectStorage. Using functions.php
caused problems for many users: they aren't PSR-4 compliant, require an
explicit include, and needed an if-guard to ensure that the functions are not
declared multiple times.GuzzleHttp\Adapter, these are now
implemented as callables that are stored in GuzzleHttp\Ring\Client.GuzzleHttp\Adapter\Transaction to GuzzleHttp\Transaction. The
Transaction object now exposes the request, response, and client as public
properties. The getters and setters have been removed.asArray parameter from
GuzzleHttp\Message\MessageInterface::getHeader. If you want to get a header
value as an array, then use the newly added getHeaderAsArray() method of
MessageInterface. This change makes the Guzzle interfaces compatible with
the PSR-7 interfaces.GuzzleHttp\Message\MessageFactory no longer allows subclasses to add
custom request options using double-dispatch (this was an implementation
detail). Instead, you should now provide an associative array to the
constructor which is a mapping of the request option name mapping to a
function that applies the option value to a request.GuzzleHttp\Stream\StreamInterface::getContents() no longer accepts a
maxLen parameter. This update makes the Guzzle streams project
compatible with the current PSR-7 proposal.GuzzleHttp\Stream\Stream::__construct,
GuzzleHttp\Stream\Stream::factory, and
GuzzleHttp\Stream\Utils::create no longer accept a size in the second
argument. They now accept an associative array of options, including the
"size" key and "metadata" key which can be used to provide custom metadata.request_fulluri in stream adapter proxies.Content-Encoding response bodies
using the decode_content request option. This is set to true by default
to decode the response body if it comes over the wire with a
Content-Encoding. Set this value to false to disable decoding the
response content, and pass a string to provide a request Accept-Encoding
header and turn on automatic response decoding. This feature now allows you
to pass an Accept-Encoding header in the headers of a request but still
disable automatic response decoding.
Closes https://github.com/guzzle/guzzle/issues/764stream=false
request option to throw an exception.
See: https://github.com/guzzle/guzzle/issues/769Content-Type header to multipart/form-data
when creating POST requests to force multipart bodies.
See https://github.com/guzzle/guzzle/issues/768ResponseInterface::xml now accepts a libxml_options option and added a
missing default argument that was required when parsing XML response bodies.save_to stream is now created lazily, which means that files are not
created on disk unless a request succeeds.json request option for POST requestsToArrayInterface to GuzzleHttp\Cookie\CookieJarjson request option to easily serialize JSON payloads.GuzzleHttp\json_decode() wrapper to safely parse JSON.setPort() and getPort() to GuzzleHttp\Message\RequestInterface.GuzzleHttp\batch() as a convenience function for sending requests in
parallel without needing to write asynchronous code.GuzzleHttp\ClientInterface::sendAll().
You can now pass a callable or an array of associative arrays where each
associative array contains the "fn", "priority", and "once" keys.getConfig() and setConfig() from clients to avoid confusion
around whether things like base_url, message_factory, etc. should be able to
be retrieved or modified.getDefaultOption() and setDefaultOption() to ClientInterfaceHTTP_PROXY, HTTPS_PROXY, and
GUZZLE_CURL_SELECT_TIMEOUT environment variablessendAll() event prioritiesget_path() and set_path()headers eventStream\create() function$certificateAuthority to false in
Guzzle\Http\ClientInterface::setSslVerification()"0"HTTP/1.0$ref attribute in service descriptions to merge over any existing parameters of a schema (rather than
clobbering everything).=.
For example foo&bar=baz is now correctly parsed and recognized as foo&bar=baz rather than foo=&bar=baz.CURLOPT_TIMEOUT_MSsetRegex() method to match the docsdebug request parameter now checks if it is truthy rather than if it existsdebug request parameter to true shows verbose cURL output instead of using the LogPluginMultiTransferException and
CommandTransferException.additionalParameters of a response to false is now honored when parsing responses with a service description\Iterator instead of \Traversable.Guzzle\Common\AbstractHasDispatcher::dispatch() now returns the event that was dispatchedGuzzle\Http\QueryString::factory() now guesses the most appropriate query aggregator to used based on the input.
See https://github.com/guzzle/guzzle/issues/379operation.parse_class event. See
https://github.com/guzzle/guzzle/pull/380<> and quotescert and ssl_key as request optionsHost header can now diverge from the host part of a URL if the header is set manuallyGuzzle\Service\Command\LocationVisitor\Request\XmlVisitor was rewritten to change from using SimpleXML to XMLWriterfalse if Guzzle\Http\EntityBody::getContentMd5() failsContent-MD5 on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin\Guzzle.
See Guzzle\Http\StaticClient::mount.command.request_options to Guzzle\Service\Command\AbstractCommand to pass request options to requests
created by a command (e.g. custom headers, query string variables, timeout settings, etc.).Guzzle\Stream\PhpStreamRequestFactory will now be set if Content-Length is returned in the
headers of a responseGuzzle\Common\Collection::setPath($path, $value) to set a value into an array using a nested key
(e.g. $collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];)Guzzle\Http\Message\Response now implements \SerializableGuzzle\Cache\CacheAdapterFactory::fromCache() to more easily create cache adaptersGuzzle\Service\ClientInterface::execute() now accepts an array, single command, or TraversableGuzzle\Http\Message\Header\Link::addLink()Guzzle\Stream\Stream using fstat() and caching the sizeGuzzle\Common\Exception\ExceptionCollection now creates a more readable exception messageGuzzle\Http\Message\AbstractMessage::getTokenizedHeader().
Now triggering an E_USER_DEPRECATED warning when used. Use $message->getHeader()->parseParams().Guzzle\Common\Collection$options argument to the end of the following methods of Guzzle\Http\ClientInterface:
createRequest, head, delete, put, patch, post, options, prepareRequest$options argument to the end of Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()applyOptions() method to Guzzle\Http\Message\Request\RequestFactoryInterfaceGuzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null) to
Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array()). You can still pass in a
resource, string, or EntityBody into the $options parameter to specify the download location of the response.Guzzle\Common\Collection::__construct($data) to no longer accepts a null value for $data but a
default array()Guzzle\Stream\StreamInterface::isRepeatableGuzzle\Http\ClientInterface::setDefaultHeaders(). Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value'). or
$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`.Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers').Guzzle\Http\ClientInterface::expandTemplate()Guzzle\Http\ClientInterface::setRequestFactory()Guzzle\Http\ClientInterface::getCurlMulti()Guzzle\Http\Message\RequestInterface::canCacheGuzzle\Http\Message\RequestInterface::setIsRedirectGuzzle\Http\Message\RequestInterface::isRedirectGuzzle\Http\Client::expandTemplate and getUriTemplate protected methods.Guzzle\Common\Version::$emitWarnings to true.Guzzle\Http\Message\Request::isResponseBodyRepeatable() as deprecated. Use
$request->getResponseBody()->isRepeatable() instead.Guzzle\Http\Message\Request::canCache() as deprecated. Use
Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest() instead.Guzzle\Http\Message\Request::canCache() as deprecated. Use
Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest() instead.Guzzle\Http\Message\Request::setIsRedirect() as deprecated. Use the HistoryPlugin instead.Guzzle\Http\Message\Request::isRedirect() as deprecated. Use the HistoryPlugin instead.Guzzle\Cache\CacheAdapterFactory::factory() as deprecatedGuzzle\Http\Client as deprecated. Use [request.options][params].Guzzle\Service\Client::enableMagicMethods() as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.Guzzle\Service\Client::getDefaultHeaders() as deprecated. Use $client->getConfig()->getPath('request.options/headers')`.Guzzle\Service\Client::setDefaultHeaders() as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`.Guzzle\Parser\Url\UrlParser as deprecated. Just use PHP's parse_url() and percent encode your UTF-8.Guzzle\Common\Collection::inject() as deprecated.Guzzle\Plugin\CurlAuth\CurlAuthPlugin as deprecated. Use $client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');CacheStorageInterface::cache($key, Response $response, $ttl = null) has changed to cache(RequestInterface $request, Response $response);CacheStorageInterface::fetch($key) has changed to fetch(RequestInterface $request);CacheStorageInterface::delete($key) has changed to delete(RequestInterface $request);CacheStorageInterface::purge($url)DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin $plugin) has changed to DefaultRevalidation::__construct(CacheStorageInterface $cache, CanCacheStrategyInterface $canCache = null)RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)Guzzle\Service\Command\CommandInterface typehint now request a
Guzzle\Service\Command\ArrayCommandInterface.Guzzle\Http\Message\RequestInterface::startResponse() to the RequestInterface to handle injecting a response
on a request while the request is still being transferredGuzzle\Service\Command\CommandInterface now extends from ToArrayInterface and ArrayAccessGuzzle\Log\MessageFormatter now properly writes "total_time" and "connect_time" valuesResponse::getPreviousResponse() (method signature still exists, but it's deprecated). Use the
HistoryPlugin for a history.responseBody alias for the response_body locationgetEffectiveUrl() and getRedirectCount() to Response objectsTransfer-Encoding: chunked header when a Content-Length is presentnumber type to service descriptions.oauth_token if the value is null in the OauthPlugin.command.after_prepare eventoauth_callback parameter to the OauthPluginadditionalParameters in service descriptions to define how custom parameters are serialized.Guzzle\Http\Message\Response::json() now allows scalar values to be returnedGuzzle\Http\Message\Response where wrapping quotes were stripped from getEtag()Guzzle\Http\Utils classGuzzle\Stream\Stream::getWrapper() and Guzzle\Stream\Stream::getSteamType() are no longer converted to
lowercaseGuzzle\Service\Command\ResponseClassInterfaceextends attributes to service description parametersGuzzle\Http\Message\Request::setResponseBody()Guzzle\Common\Collection::inject method\AppendIteratorcommands to operationsjson parameter locationbody_as_string in a request's curl options to enable.getParamNames() and hasParam()Guzzle\Service\Command\AbstractCommand::getRequestHeaders()+ is now treated as an encoded space when parsing query stringscurl. prefixed parametersguzzlehttp/streams. These stream abstractions
are available in the guzzlehttp/psr7 package under the GuzzleHttp\Psr7
namespace.GuzzleHttp\Middleware::retry, which
means the guzzlehttp/retry-subscriber is now obsolete.GuzzleHttp\Handler\MockHandler.future request option to send an async request.
Instead, use one of the *Async methods of a client (e.g., requestAsync,
getAsync, etc.).GuzzleHttp\Promise instead of React's promise library to avoid
recursion required by chaining and forwarding react promises. See
https://github.com/guzzle/promisesrequestAsync and sendAsync to send request asynchronously.getAsync(), postAsync(), etc. to send requests
asynchronously.form_fields and form_files request options.GuzzleHttp\Post namespace.body request option no longer accepts an array for POST requests.exceptions request option has been deprecated in favor of the
http_errors request options.save_to request option has been deprecated in favor of sink request
option.get(), post(), put(), patch(), options(), etc. are
now magic methods that will send synchronous requests.Utils.php with plain functions in functions.php.GuzzleHttp\Collection.GuzzleHttp\BatchResults. Batched pool results are now returned as
an array.GuzzleHttp\Query. Query string handling is now handled using an
associative array passed into the query request option. The query string
is serialized using PHP's http_build_query. If you need more control, you
can pass the query string in as a string.GuzzleHttp\QueryParser has been replaced with the
GuzzleHttp\Psr7\parse_query.How can I help you explore Laravel packages today?