diff --git a/docs/developer/src/httpclient.md b/docs/developer/src/httpclient.md index 94233d5ef8..7cd564fbae 100644 --- a/docs/developer/src/httpclient.md +++ b/docs/developer/src/httpclient.md @@ -8,4 +8,22 @@ The `$options` are elaborated in [Symfony Doc](https://symfony.com/doc/current/h Please note that the HTTP Client is [lazy](https://en.wikipedia.org/wiki/Lazy_evaluation), which makes it very important to bear in mind [Network Errors](https://symfony.com/doc/current/http_client.html#dealing-with-network-errors), +An example where this behaviour has to be considered: + +```php +if (Common::isValidHttpUrl($url)) { + $head = HTTPClient::head($url); + // This must come before getInfo given that Symfony HTTPClient is lazy (thus forcing curl exec) + try { + $headers = $head->getHeaders(); + } catch (ClientException $e) { + throw new InvalidArgumentException(previous: $e); + } + $url = $head->getInfo('url'); // The last effective url (after getHeaders, so it follows redirects) + $url_hash = hash(self::URLHASH_ALGO, $url); +} else { + throw new InvalidArgumentException(); +} +``` + What you can take from Responses is specified [here](https://symfony.com/doc/current/http_client.html#processing-responses). \ No newline at end of file