Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Failed to load latest commit information.
build-tools first commit
src/M6Web/Bundle/WSClientBundle Merge pull request #30 from M6Web/feature/coke
.bootstrap.atoum.php Mod: autoloading by the good way
.coke add coke
.gitignore change composer bin directory
.travis.yml fix travis ci change composer bin directory
LICENSE Add: OSS files change composer bin directory
composer.json change composer bin directory

Bundle WSClient Build Status

This bundle give a simple webservices client to call external urls. By default, it is based on Guzzle but you can plug any other client library.


No default service is defined. You must set a configuration to instanciate one or more services.


The main configuration key is m6_ws_client. Each subkey defines an instance of a webservice client. These services are named m6_ws_client_ + the subkey except for the default subkey that defines the main service m6_ws_client. For each instance, several parameters can be set :

  • base_url : the base domain of each url called with the service. If an absolute url is passed to the client, the base url is ignored.
  • config (optional) : additional parameters to configure the client, must be an array. See
  • cache (optional) :
    • ttl : 86400s by default. Max ttl if force_request_ttl is FALSE, forced ttl if force_request_ttl is TRUE
    • force_request_ttl (optional) : FALSE by default. If TRUE, request TTL is the same than the cache TTL, otherwise the request TTL is calculated according to response headers.
    • service : low level cache service (must implement M6Web\Bundle\WSClientBundle\Cache\CacheInterface)
    • adpater : adapter class name (must implement \Doctrine\Common\Cache\Cache)
    • storage : (optional) storage class name (must implement \GuzzleHttp\Subscriber\Cache\CacheStorageInterface)
    • subscriber : (optional) subscriber class (must implement \GuzzleHttp\Subscriber\Cache\SubscriberInterface)
    • can_cache : (optional) a callable to determine if a request can be cached

Here is an example of a simple configuration :

            base_url: ''
                timeout: 10
                allow_redirects: {max: 5, strict: false, referer: true}
                exceptions: false
                ttl: 3600
                adapter: M6\Bundle\RedisBundle\Guzzle\RedisCacheAdapter
                service: m6_redis

Simple use case

For instance, in a controller :

$wsclient = $this->get('m6_ws_client');
$response = $wsclient->get('');

echo $response->getBody();

unit test

composer install --dev
Something went wrong with that request. Please try again.