[8.x] Enable to modify HTTP Client request headers when using beforeSending() callback #42244
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Basically, I'm trying to add a request header when sending an HTTP request using HTTP Client from Laravel. But I want to make this thing dynamically since it requires the targeted URL as the header data and it will be used in many further HTTP request. So I decide to use the
Http::beforeSending()
method and take the givenIlluminate\Http\Client\Request
parameter to get the URL as the example shown below.The problem is the request header wasn't changed at all since the
PendingRequest::runBeforeSendingCallbacks()
used to run this callback doesn't bring that into the real HTTP request as I expect. UsingPendingRequest::withHeaders()
also doesn't work because the actual HTTP Request was already created, so any modification that comes from thePendingRequest
instance is useless.This PR will fix that problem, so every registered
beforeSending
callback on the HTTP Client that returns aGuzzleHttp\Psr7\RequestInterface
orIlluminate\Http\Client\Request
value will be applied to the HTTP request instance.