= sfWebBrowser plugin = The `sfWebBrowserPlugin` proposes an HTTP client capable of making web requests. The interface is similar to that of `sfTestBrowser`. === Possible uses === * Querying a Web service * Monitoring a Website * Mashup of content from several websites * Aggregation of RSS feeds * Proxy to another server * Cross-domain AJAX interactions * API to foreign websites * ... == Contents == This plugin contains one single class: `sfWebBrowser`. Unit tests are available in the SVN repository, to be placed in a symfony application's `test/` directory. == Features == The `sfWebBrowser` class makes web requests based on a URI: {{{ $b = new sfWebBrowser(); $b->get('http://www.example.com/'); $res = $b->getResponseText(); }}} The usual methods of the `sfTestBrowser` also work there, with the fluid interface. {{{ // Inline $b->get('http://www.example.com/')->get('http://www.google.com/')->back()->reload(); // More readable $b->get('http://www.example.com/') ->get('http://www.google.com/') ->back() ->reload(); }}} The browser accepts absolute and relative URIs {{{ $b->get('http://www.example.com/test.html'); $b->get('test.html'); }}} The `get()` method accepts parameters either as a query string, or as an array. {{{ $b->get('http://www.example.com/test.php?foo=bar'); $b->get('http://www.example.com/test.php', array('foo', 'bar')); }}} Requests in POST mode are also supported. {{{ $b->post('http://www.example.com/test.php', array('foo', 'bar')); }}} You can access the response in various formats, at your convenience: {{{ $myString = $b->getResponseText(); $myString = $b->getResponseBody(); // drop the <head> part $myDomDocument = $b->getResponseDom(); $myDomCssSelector = $b->getResponseDomCssSelector(); $mySimpleXml = $b->getResponseXml(); }}} You can also interact with the response with the `setFields()` and `click()` methods. {{{ $b->get('http://www.example.com/login') ->setField('user', 'foobar') ->setField('password', 'barbaz') ->click('submit'); }}} The browser supports HTTP and HTTPS requests, proxies, redirects, and timeouts. Gzip and deflate content-encoded response bodies are also supported, provided that you have the [http://php.net/zlib zlib extention] enabled. == Installation == * Install the plugin {{{ $ symfony plugin-install http://plugins.symfony-project.com/sfWebBrowserPlugin }}} * Clear the cache to enable the autoloading to find the new class {{{ $ symfony cc }}} == Known limitations == The web request is made via `fopen()`, so this will only work if PHP is compiled with sockets support and if `allow_url_fopen` is defined to `true` in the `php.ini`. Cookies are not handled yet. Caching is not supported yet. == Changelog == === 2007-02-16 | 0.9.3 === * tristan: Added support for gzip and deflate. * tristan: possibility to pass default request headers to sfWebBrowser's constructor * tristan: "Accept-Encoding" header is automatically set depending on PHP capabilities * tristan: Fixed problems with request and response headers case * tristan: renamed "browser options" to "adapter options" (http://www.symfony-project.com/forum/index.php/m/21635/) * tristan: '''BC break''' constructor signature changed : `new sfWebBrowser(array $headers, array $adapter_options)` * tristan: unit tested POST requests * tristan: changed way httpd headers are stored internally * tristan: fixed small bug in getResponseBody() * francois: fixed unit test for malformed headers