diff --git a/src/Symfony/Component/HttpClient/HttpOptions.php b/src/Symfony/Component/HttpClient/HttpOptions.php index 57590d3c131fc..8eba8ba055f7c 100644 --- a/src/Symfony/Component/HttpClient/HttpOptions.php +++ b/src/Symfony/Component/HttpClient/HttpOptions.php @@ -63,6 +63,17 @@ public function setQuery(array $query): static return $this; } + /** + * @return $this + */ + public function addHeader(string $key, string $value): static + { + $this->options['headers'] ??= []; + $this->options['headers'][$key] = $value; + + return $this; + } + /** * @return $this */ diff --git a/src/Symfony/Component/HttpClient/Tests/HttpOptionsTest.php b/src/Symfony/Component/HttpClient/Tests/HttpOptionsTest.php index 9dbbff7dd9364..487a889d454f7 100644 --- a/src/Symfony/Component/HttpClient/Tests/HttpOptionsTest.php +++ b/src/Symfony/Component/HttpClient/Tests/HttpOptionsTest.php @@ -39,4 +39,15 @@ public function testSetAuthBearer() { $this->assertSame('foobar', (new HttpOptions())->setAuthBearer('foobar')->toArray()['auth_bearer']); } + + public function testAddHeader() + { + $options = new HttpOptions(); + $options->addHeader('Accept', 'application/json'); + $this->assertSame(['Accept' => 'application/json'], $options->toArray()['headers']); + $options->addHeader('Accept-Language', 'en-US,en;q=0.5'); + $this->assertSame(['Accept' => 'application/json', 'Accept-Language' => 'en-US,en;q=0.5'], $options->toArray()['headers']); + $options->addHeader('Accept', 'application/html'); + $this->assertSame(['Accept' => 'application/html', 'Accept-Language' => 'en-US,en;q=0.5'], $options->toArray()['headers']); + } }