An advanced async HTTP client library for PHP, enabling efficient, non-blocking, and concurrent requests and responses.
BufferedContent::fromJson()
by @trowski in https://github.com/amphp/http-client/pull/355
Form::addNestedFields()
by @trowski in https://github.com/amphp/http-client/pull/356
RequestBody
-> HttpContent
by @ShiSHcat in https://github.com/amphp/http-client/pull/358
Full Changelog: https://github.com/amphp/http-client/compare/v5.0.1...v5.1.0
Full Changelog: https://github.com/amphp/http-client/compare/v4.6.3...v4.6.4
StreamException
or CancelledException
as specified by the ReadableStream
interface.Full Changelog: https://github.com/amphp/http-client/compare/v5.0.0...v5.0.1
Stable release compatible with AMPHP v3 and fibers! 🎉
As with other libraries compatible with AMPHP v3, most cases of parameters or returns of Promise<ResolutionType>
have been replaced with ResolutionType
.
Request
instances are mutable now and can no longer be reused.Request
now extends HttpRequest
from amphp/http
, gaining methods to get and set query parameters on the request instead of needing to manipulate the URI object directly.getRawHeaders()
→ getHeaderPairs()
, parseRawHeaders()
→ parseHeaderPairs()
UnprocessedRequestException
, use Request::isUnprocessed()
instead.EventListener
interface has been reworked and event listeners can be registered with HttpClientBuilder::listen()
now to automatically apply to each request instead of only being registered on specific requests.FormBody
with new Form
API
appids=30&appids=20
instead of appids%5B0%5D=30&appids%5B1%5D=20
(#340)
If you need the previous names, add []
to the name of your field.RequestBody
with new HttpContent
API
BufferedContent
StreamedContent
Body\FileBody
Body\FormBody
Body\JsonBody
Body\StreamBody
Body\StringBody
There are no changes compared to 5.0.0 Beta 17.
CONNECT
requestsFull Changelog: https://github.com/amphp/http-client/compare/v5.0.0-beta.16...v5.0.0-beta.17
Full Changelog: https://github.com/amphp/http-client/compare/v5.0.0-beta.15...v5.0.0-beta.16
Invalid request phase transition from Connect to RequestHeaders
(#347)connect*
and tls*
events on EventListener
with new connectionAcquired
event. Timings are exposed via methods on Connection
now.EventListener::push()
to indicate pushed responses to the EventListener
and copy event listeners to pushed requests from the parent request to ensure they're called.EventListener::requestFailed
to accept any Throwable
Request
UnprocessedRequestException
by @kelunik in https://github.com/amphp/http-client/pull/349, use Request::isUnprocessed()
instead.Request::isStarted()
Full Changelog: https://github.com/amphp/http-client/compare/v5.0.0-beta.14...v5.0.0-beta.15
New event system by @kelunik in https://github.com/amphp/http-client/pull/334:
The EventListener
interface has been reworked and event listeners can be registered with HttpClientBuilder::listen()
now to automatically apply to each request instead of only being registered on specific requests.
Request phases are now rather strict and checks are in place to ensure the correct order of events. Should you notice any issues with that, please open an issue!
The two remaining issues we want to solve before the stable release are:
Full Changelog: https://github.com/amphp/http-client/compare/v5.0.0-beta.13...v5.0.0-beta.14
league/uri
^7 support, resulting in psr/http-message
^2 supportFollowRedirects
to avoid headers of later interceptors being copied to the new request, fixing e.g. raw GZip response bodies on double redirects (#341)Full Changelog: https://github.com/amphp/http-client/compare/v5.0.0-beta.12...v5.0.0-beta.13
psr/http-message
^2 by @drealecs in https://github.com/amphp/http-client/pull/328
league/uri
^7 by @nicolas-grekas in https://github.com/amphp/http-client/pull/335
Full Changelog: https://github.com/amphp/http-client/compare/v4.6.2...v4.6.3