# class http\Client implements SplSubject, Countable
-The HTTP client. The only driver currently supported is http\Client\Curl.
+The HTTP client. See http\Client\Curl's [options](http/Client/Curl#Options:) which is the only driver currently supported.
## Examples:
The http\Client\Curl namespace holds option value constants specific to the curl driver of the http\Client.
+## Changelog
+
+Version | Change
+--------|-------
+2.1.0 | Added $dns_interface, $dns_local_ip4, $dns_local_ip6 options.
+
## Constants:
### HTTP Protocol Version
## Options:
+The option names used here are more or less derived from the corresponding CURLOPT_* names.
### HTTP
* int $protocol
* array $resolve
A list of HOST:PORT:ADDRESS mappings which pre-populate the DNS cache. Available if libcurl is v7.21.3 or more recent.
* string $dns_servers
- Comma separated list of custom DNS servers of the form HOST[:PORT]. Available if libcurl is v7.24.0 or more recent.
-
+ Comma separated list of custom DNS servers of the form HOST[:PORT]. Available if libcurl is v7.24.0 or more recent and has built-in c-ares support.
+* string $dns_interface
+ The name of the network interface ***name*** that the DNS resolver should bind to. Available if libcurl is v7.33.0 or more recent and has built-in c-ares support.
+* string $dns_local_ip4
+ The local IPv4 ***address*** that the resolver should bind to. Available if libcurl is v7.33.0 or more recent and has built-in c-ares support.
+* string $dns_local_ip6
+ The local IPv6 ***address*** that the resolver should bind to. Available if libcurl is v7.33.0 or more recent and has built-in c-ares support.
+
### Limits
* int $low_speed_limit
File with the concatenation of CRL in PEM format. Available if libcurl was built with OpenSSL support.
* bool $certinfo
Enable gathering of SSL certificate chain information. Available if libcurl is v7.19.1 or more recent.
-
Parse, interpret and compose HTTP (header) parameters.
+## Changelog:
+
+Version | Change
+--------|-------
+2.0.1 | Added [RFC5987](http://tools.ietf.org/html/rfc5987) support
+
+## Example:
+
+ <?php
+
+ $u = urlencode("ü");
+ $s = urlencode("ß");
+
+ $t = "p1*=utf-8'de's$u$s,p2*=utf-8''hei$s;a1*=utf-8''a$s;a2*=utf-8''e$s;a3=no,p3=not";
+ $p = new http\Params($t);
+
+ var_dump($p->params, $p->toString());
+
+ ?>
+
+Yields:
+
+ array(3) {
+ ["p1"]=>
+ array(2) {
+ ["*rfc5987*"]=>
+ array(1) {
+ ["de"]=>
+ string(5) "süß"
+ }
+ ["arguments"]=>
+ array(0) {
+ }
+ }
+ ["p2"]=>
+ array(2) {
+ ["*rfc5987*"]=>
+ array(1) {
+ [""]=>
+ string(5) "heiß"
+ }
+ ["arguments"]=>
+ array(2) {
+ ["*rfc5987*"]=>
+ array(2) {
+ ["a1"]=>
+ array(1) {
+ [""]=>
+ string(3) "aß"
+ }
+ ["a2"]=>
+ array(1) {
+ [""]=>
+ string(3) "eß"
+ }
+ }
+ ["a3"]=>
+ string(2) "no"
+ }
+ }
+ ["p3"]=>
+ array(2) {
+ ["value"]=>
+ string(3) "not"
+ ["arguments"]=>
+ array(0) {
+ }
+ }
+ }
+ string(98) "p1*=utf-8'de's%C3%BC%C3%9F,p2*=utf-8''hei%C3%9F;a1*=utf-8''a%C3%9F;a2*=utf-8''e%C3%9F;a3=no,p3=not"
+
+
## Constants:
* DEF_PARAM_SEP
Parse sub dimensions indicated by square brackets.
* PARSE_QUERY
Parse URL querystring (same as http\Params::PARSE_URLENCODED|http\Params::PARSE_DIMENSION).
+* PARSE_RFC5987
+ Parse [RFC5987](http://tools.ietf.org/html/rfc5987) style encoded character set and language information embedded in HTTP header params.
## Properties: