@@ -148,7 +148,8 @@ method to retrieve a new instance of the client with new default options::
148
148
149
149
.. versionadded :: 5.3
150
150
151
- The ``withOptions() `` method was introduced in Symfony 5.3.
151
+ The :method: `Symfony\\ Contracts\\ HttpClient\\ HttpClientInterface::withOptions `
152
+ method was introduced in Symfony 5.3.
152
153
153
154
Some options are described in this guide:
154
155
@@ -481,8 +482,10 @@ each request (which overrides any global authentication):
481
482
.. note ::
482
483
483
484
The NTLM authentication mechanism requires using the cURL transport.
484
- By using ``HttpClient::createForBaseUri() ``, we ensure that the auth credentials
485
- won't be sent to any other hosts than https://example.com/.
485
+ By using the ``createForBaseUri() `` method of
486
+ :class: `Symfony\\ Component\\ HttpClient\\ HttpClient `, we ensure that
487
+ the auth credentials won't be sent to any other hosts than
488
+ https://example.com/.
486
489
487
490
Query String Parameters
488
491
~~~~~~~~~~~~~~~~~~~~~~~
@@ -739,7 +742,7 @@ original HTTP client::
739
742
740
743
$client = new RetryableHttpClient(HttpClient::create());
741
744
742
- The `` RetryableHttpClient ` ` uses a
745
+ The :class: ` Symfony \\ Component \\ HttpClient \\ RetryableHttpClient ` uses a
743
746
:class: `Symfony\\ Component\\ HttpClient\\ Retry\\ RetryStrategyInterface ` to
744
747
decide if the request should be retried, and to define the waiting time between
745
748
each retry.
@@ -777,7 +780,8 @@ called when new data is uploaded or downloaded and at least once per second::
777
780
]);
778
781
779
782
Any exceptions thrown from the callback will be wrapped in an instance of
780
- ``TransportExceptionInterface `` and will abort the request.
783
+ :class: `Symfony\\ Contracts\\ HttpClient\\ Exception\\ TransportExceptionInterface `
784
+ and will abort the request.
781
785
782
786
HTTPS Certificates
783
787
~~~~~~~~~~~~~~~~~~
@@ -858,9 +862,10 @@ This component supports both the native PHP streams and cURL to make the HTTP
858
862
requests. Although both are interchangeable and provide the same features,
859
863
including concurrent requests, HTTP/2 is only supported when using cURL.
860
864
861
- ``HttpClient::create() `` selects the cURL transport if the `cURL PHP extension `_
862
- is enabled and falls back to PHP streams otherwise. If you prefer to select
863
- the transport explicitly, use the following classes to create the client::
865
+ The ``create() `` method of :class: `Symfony\\ Component\\ HttpClient\\ HttpClient `
866
+ selects the cURL transport if the `cURL PHP extension `_ is enabled and falls
867
+ back to PHP streams otherwise. If you prefer to select the transport
868
+ explicitly, use the following classes to create the client::
864
869
865
870
use Symfony\Component\HttpClient\CurlHttpClient;
866
871
use Symfony\Component\HttpClient\NativeHttpClient;
@@ -1041,8 +1046,9 @@ following methods::
1041
1046
Streaming Responses
1042
1047
~~~~~~~~~~~~~~~~~~~
1043
1048
1044
- Call the ``stream() `` method of the HTTP client to get *chunks * of the
1045
- response sequentially instead of waiting for the entire response::
1049
+ Call the ``stream() `` method of :class: `Symfony\\ Contracts\\ HttpClient\\ HttpClientInterface `
1050
+ to get *chunks * of the response sequentially instead of waiting for the
1051
+ entire response::
1046
1052
1047
1053
$url = 'https://releases.ubuntu.com/18.04.1/ubuntu-18.04.1-desktop-amd64.iso';
1048
1054
$response = $client->request('GET', $url);
@@ -1072,8 +1078,7 @@ Canceling Responses
1072
1078
1073
1079
To abort a request (e.g. because it didn't complete in due time, or you want to
1074
1080
fetch only the first bytes of the response, etc.), you can either use the
1075
- ``cancel() `` method of
1076
- :class: `Symfony\\ Contracts\\ HttpClient\\ ResponseInterface `::
1081
+ ``cancel() `` method of :class: `Symfony\\ Contracts\\ HttpClient\\ ResponseInterface `::
1077
1082
1078
1083
$response->cancel();
1079
1084
@@ -1191,10 +1196,12 @@ If you look again at the snippet above, responses are read in requests' order.
1191
1196
But maybe the 2nd response came back before the 1st? Fully asynchronous operations
1192
1197
require being able to deal with the responses in whatever order they come back.
1193
1198
1194
- In order to do so, the ``stream() `` method of HTTP clients accepts a list of
1195
- responses to monitor. As mentioned :ref: `previously <http-client-streaming-responses >`,
1196
- this method yields response chunks as they arrive from the network. By replacing
1197
- the "foreach" in the snippet with this one, the code becomes fully async::
1199
+ In order to do so, the ``stream() `` method of
1200
+ :class: `Symfony\\ Contracts\\ HttpClient\\ HttpClientInterface ` accepts a list of
1201
+ responses to monitor. As mentioned
1202
+ :ref: `previously <http-client-streaming-responses >`, this method yields response
1203
+ chunks as they arrive from the network. By replacing the "foreach" in the
1204
+ snippet with this one, the code becomes fully async::
1198
1205
1199
1206
foreach ($client->stream($responses) as $response => $chunk) {
1200
1207
if ($chunk->isFirst()) {
@@ -1331,7 +1338,8 @@ installed in your application::
1331
1338
// this won't hit the network if the resource is already in the cache
1332
1339
$response = $client->request('GET', 'https://example.com/cacheable-resource');
1333
1340
1334
- ``CachingHttpClient `` accepts a third argument to set the options of the ``HttpCache ``.
1341
+ :class: `Symfony\\ Component\\ HttpClient\\ CachingHttpClient` ` accepts a third argument
1342
+ to set the options of the :class: `Symfony\\ Component\\ HttpKernel\\ HttpCache\\ HttpCache `.
1335
1343
1336
1344
Consuming Server-Sent Events
1337
1345
----------------------------
@@ -1497,8 +1505,8 @@ it. As such, you should not use it in newly written code. The component is still
1497
1505
interoperable with libraries that require it thanks to the
1498
1506
:class: `Symfony\\ Component\\ HttpClient\\ HttplugClient ` class. Similarly to
1499
1507
:class: `Symfony\\ Component\\ HttpClient\\ Psr18Client ` implementing relevant parts of PSR-17,
1500
- `` HttplugClient `` also implements the factory methods defined in the related
1501
- ``php-http/message-factory `` package.
1508
+ :class: ` Symfony \\ Component \\ HttpClient \\ HttplugClient ` also implements the factory methods
1509
+ defined in the related ``php-http/message-factory `` package.
1502
1510
1503
1511
.. code-block :: terminal
1504
1512
@@ -1529,15 +1537,16 @@ that requires HTTPlug dependencies::
1529
1537
// [...]
1530
1538
}
1531
1539
1532
- Because ``HttplugClient `` implements the three interfaces, you can use it this way::
1540
+ Because :class: `Symfony\\ Component\\ HttpClient\\ HttplugClient ` implements the
1541
+ three interfaces,you can use it this way::
1533
1542
1534
1543
use Symfony\Component\HttpClient\HttplugClient;
1535
1544
1536
1545
$httpClient = new HttplugClient();
1537
1546
$apiClient = new SomeSdk($httpClient, $httpClient, $httpClient);
1538
1547
1539
- If you'd like to work with promises, `` HttplugClient `` also implements the
1540
- ``HttpAsyncClient `` interface. To use it, you need to install the
1548
+ If you'd like to work with promises, :class: ` Symfony \\ Component \\ HttpClient \\ HttplugClient `
1549
+ also implements the ``HttpAsyncClient `` interface. To use it, you need to install the
1541
1550
``guzzlehttp/promises `` package:
1542
1551
1543
1552
.. code-block :: terminal
@@ -1717,20 +1726,24 @@ external service. By not making actual HTTP requests there is no need to worry a
1717
1726
the service being online or the request changing state, for example deleting
1718
1727
a resource.
1719
1728
1720
- ``MockHttpClient `` implements the ``HttpClientInterface ``, just like any actual
1721
- HTTP client in this component. When you type-hint with ``HttpClientInterface ``
1722
- your code will accept the real client outside tests, while replacing it with
1723
- ``MockHttpClient `` in the test.
1729
+ :class: `Symfony\\ Component\\ HttpClient\\ MockHttpClient ` implements the
1730
+ :class: `Symfony\\ Contracts\\ HttpClient\\ HttpClientInterface `, just like any actual
1731
+ HTTP client in this component. When you type-hint with
1732
+ :class: `Symfony\\ Contracts\\ HttpClient\\ HttpClientInterface ` your code will accept
1733
+ the real client outside tests, while replacing it with
1734
+ :class: `Symfony\\ Component\\ HttpClient\\ MockHttpClient ` in the test.
1724
1735
1725
- When the ``request `` method is used on ``MockHttpClient ``, it will respond with
1726
- the supplied ``MockResponse ``. There are a few ways to use it, as described
1727
- below.
1736
+ When the ``request `` method is used on :class: `Symfony\\ Component\\ HttpClient\\ MockHttpClient `,
1737
+ it will respond with the supplied
1738
+ :class: `Symfony\\ Component\\ HttpClient\\ Response\\ MockResponse `. There are a few ways to use
1739
+ it, as described below.
1728
1740
1729
1741
HTTP Client and Responses
1730
1742
~~~~~~~~~~~~~~~~~~~~~~~~~
1731
1743
1732
- The first way of using ``MockHttpClient `` is to pass a list of responses to its
1733
- constructor. These will be yielded in order when requests are made::
1744
+ The first way of using :class: `Symfony\\ Component\\ HttpClient\\ MockHttpClient `
1745
+ is to pass a list of responses to its constructor. These will be yielded
1746
+ in order when requests are made::
1734
1747
1735
1748
use Symfony\Component\HttpClient\MockHttpClient;
1736
1749
use Symfony\Component\HttpClient\Response\MockResponse;
@@ -1745,8 +1758,8 @@ constructor. These will be yielded in order when requests are made::
1745
1758
$response1 = $client->request('...'); // returns $responses[0]
1746
1759
$response2 = $client->request('...'); // returns $responses[1]
1747
1760
1748
- Another way of using `` MockHttpClient `` is to pass a callback that generates the
1749
- responses dynamically when it's called::
1761
+ Another way of using :class: ` Symfony \\ Component \\ HttpClient \\ MockHttpClient ` is to
1762
+ pass a callback that generates the responses dynamically when it's called::
1750
1763
1751
1764
use Symfony\Component\HttpClient\MockHttpClient;
1752
1765
use Symfony\Component\HttpClient\Response\MockResponse;
@@ -1761,7 +1774,9 @@ responses dynamically when it's called::
1761
1774
.. tip ::
1762
1775
1763
1776
Instead of using the first argument, you can also set the (list of)
1764
- responses or callbacks using the ``setResponseFactory() `` method::
1777
+ responses or callbacks using the
1778
+ :method: `Symfony\\ Component\\ HttpClient\\ MockHttpClient::setResponseFactory `
1779
+ method::
1765
1780
1766
1781
$responses = [
1767
1782
new MockResponse($body1, $info1),
@@ -1773,7 +1788,8 @@ responses dynamically when it's called::
1773
1788
1774
1789
.. versionadded :: 5.4
1775
1790
1776
- The ``setResponseFactory() `` method was introduced in Symfony 5.4.
1791
+ The :method: `Symfony\\ Component\\ HttpClient\\ MockHttpClient::setResponseFactory `
1792
+ method was introduced in Symfony 5.4.
1777
1793
1778
1794
If you need to test responses with HTTP status codes different than 200,
1779
1795
define the ``http_code `` option::
@@ -1789,10 +1805,12 @@ define the ``http_code`` option::
1789
1805
$response = $client->request('...');
1790
1806
1791
1807
The responses provided to the mock client don't have to be instances of
1792
- ``MockResponse ``. Any class implementing ``ResponseInterface `` will work (e.g.
1793
- ``$this->createMock(ResponseInterface::class) ``).
1808
+ :class: `Symfony\\ Component\\ HttpClient\\ Response\\ MockResponse `. Any class
1809
+ implementing :class: `Symfony\\ Contracts\\ HttpClient\\ ResponseInterface `
1810
+ will work (e.g. ``$this->createMock(ResponseInterface::class) ``).
1794
1811
1795
- However, using ``MockResponse `` allows simulating chunked responses and timeouts::
1812
+ However, using :class: `Symfony\\ Component\\ HttpClient\\ Response\\ MockResponse `
1813
+ allows simulating chunked responses and timeouts::
1796
1814
1797
1815
$body = function () {
1798
1816
yield 'hello';
@@ -1884,7 +1902,8 @@ Then configure Symfony to use your callback:
1884
1902
Testing Request Data
1885
1903
~~~~~~~~~~~~~~~~~~~~
1886
1904
1887
- The ``MockResponse `` class comes with some helper methods to test the request:
1905
+ The :class: `Symfony\\ Component\\ HttpClient\\ Response\\ MockResponse ` class comes
1906
+ with some helper methods to test the request:
1888
1907
1889
1908
* ``getRequestMethod() `` - returns the HTTP method;
1890
1909
* ``getRequestUrl() `` - returns the URL the request would be sent to;
@@ -1893,8 +1912,9 @@ The ``MockResponse`` class comes with some helper methods to test the request:
1893
1912
1894
1913
.. versionadded :: 5.2
1895
1914
1896
- The ``getRequestMethod() `` and ``getRequestUrl() `` methods were introduced
1897
- in Symfony 5.2.
1915
+ The :method: `Symfony\\ Component\\ HttpClient\\ Response\\ MockResponse::getRequestMethod `
1916
+ and :method: `Symfony\\ Component\\ HttpClient\\ Response\\ MockResponse::getRequestUrl `
1917
+ methods were introduced in Symfony 5.2.
1898
1918
1899
1919
Usage example::
1900
1920
0 commit comments