Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
[BrowserKit] Add support for HttpClient#30602
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Uh oh!
There was an error while loading.Please reload this page.
8bde4ee toa15b707Compare
ro0NL left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Limit is the sky
You mean "Sky's the limit" i suppose :D
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
a15b707 to8443c88Compare…HttpClientInterface (fabpot)This PR was merged into the 4.3-dev branch.Discussion----------[HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface| Q | A| ------------- | ---| Branch? | master| Bug fix? | no| New feature? | yes| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets | -| License | MIT| Doc PR | -This commit is directly extracted from#30602 by@fabpotCommits-------b579b02 [HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface
380a517 toa25fe3fCompare
nicolas-grekas left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
| class HttpBrowserextends AbstractBrowser | ||
| { | ||
| private$client; | ||
| private$httpKernelBrowser; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
unused
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
removed thanks
a25fe3f tob5b2a25Comparefabpot commentedMar 23, 2019
Thank you THERAGE Kévin. |
…GE Kévin)This PR was merged into the 4.3-dev branch.Discussion----------[BrowserKit] Add support for HttpClient| Q | A| ------------- | ---| Branch? | master| Bug fix? | no| New feature? | yes| BC breaks? | no| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->| Tests pass? | yes <!-- please add some, will be required by reviewers -->| Fixed tickets | part of#30502| License | MIT| Doc PR | not yetWhen combining the power of the new HttpClient component with the BrowserKit and Mime components, we can makes something really powerful... a full/better/awesome replacement forhttps://github.com/FriendsOfPHP/Goutte.So, this PR is about integrating the HttpClient component with BrowserKit to give users a high-level interface to ease usages in the most common use cases.Scraping websites can be done like this:```phpuse Symfony\Component\BrowserKit\HttpBrowser;use Symfony\Component\HttpClient\HttpClient;$client = HttpClient::create();$browser = new HttpBrowser($client);$browser->request('GET', 'https://example.com/');$browser->clickLink('Log In');$browser->submitForm('Sign In', ['username' => 'me', 'password' => 'pass']);$browser->clickLink('Subscriptions')->filter('table tr:nth-child(2) td:nth-child(2)')->each(function ($node) { echo trim($node->text())."\n";});```And voilà! Nice, isn't?Want to add HTTP cache? Sure:```phpuse Symfony\Component\HttpKernel\HttpCache\Store;$client = HttpClient::create();$store = new Store(sys_get_temp_dir().'/http-cache-store');$browser = new HttpBrowser($client, $store);// ...```Want logging and debugging of HTTP Cache? Yep:```phpuse Psr\Log\AbstractLogger;class EchoLogger extends AbstractLogger{ public function log($level, $message, array $context = []) { echo $message."\n"; }}$browser = new HttpBrowser($client, $store, new EchoLogger());```The first time you run your code, you will get an output similar to:```Request: GEThttps://twig.symfony.com/Response: 200https://twig.symfony.com/Cache: GET /: miss, storeRequest: GEThttps://twig.symfony.com/doc/2.x/Response: 200https://twig.symfony.com/doc/2.x/Cache: GET /doc/2.x/: miss, store```But then:```Cache: GET /: freshCache: GET /doc/2.x/: fresh```Limit is the sky here as you get the full power of all the Symfony ecosystem.Under the hood, these examples leverage HttpFoundation, HttpKernel (with HttpCache),DomCrawler, BrowserKit, CssSelector, HttpClient, Mime, ...Excited?P.S. : Tests need to wait for the HttpClient Mock class to land into master.Commits-------b5b2a25 Add tests for HttpBrowserdd55845 [BrowserKit] added support for HttpClient
This PR was merged into the 4.3-dev branch.Discussion----------[HttpClient] added CachingHttpClient| Q | A| ------------- | ---| Branch? | master| Bug fix? | no| New feature? | yes| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets | -| License | MIT| Doc PR | -The proposed `CachingHttpClient` uses `HttpCache` from the HttpKernel component to provide an HTTP-compliant cache.If this is accepted, it could replace the corresponding part in#30602Commits-------dae5686 [HttpClient] added CachingHttpClient
This PR was merged into the 4.3 branch.Discussion----------Replace references to Goutte with HttpBrowserWith the introduction of [HttpBrowser](symfony/symfony#30602) there's no need for Goutte any more, but the docs currently mention both, which is a little bit confusing. Also, the current version of Goutte actuality [extends HttpBrowser](https://github.com/FriendsOfPHP/Goutte/blob/v4.0.0/Goutte/Client.php), but doesn't add any functionality to it. It seems to me that Goutte is being completely replaced with HttpBrowser so there's no point in mentioning it in the docs any more.Commits-------50898ae Replace references to Goutte with HttpBrowser
When combining the power of the new HttpClient component with the BrowserKit and Mime components, we can makes something really powerful... a full/better/awesome replacement forhttps://github.com/FriendsOfPHP/Goutte.
So, this PR is about integrating the HttpClient component with BrowserKit to give users a high-level interface to ease usages in the most common use cases.
Scraping websites can be done like this:
And voilà! Nice, isn't?
Want to add HTTP cache? Sure:
Want logging and debugging of HTTP Cache? Yep:
The first time you run your code, you will get an output similar to:
But then:
Limit is the sky here as you get the full power of all the Symfony ecosystem.
Under the hood, these examples leverage HttpFoundation, HttpKernel (with HttpCache),
DomCrawler, BrowserKit, CssSelector, HttpClient, Mime, ...
Excited?
P.S. : Tests need to wait for the HttpClient Mock class to land into master.