)
Function for resolving the proxy server to be used for a HTTP connection from the proxy configuration specified through environment variables.
The following environment variables are taken into account:
http_proxy
https_proxy
no_proxy
HTTP_PROXY
HTTPS_PROXY
NO_PROXY
http_proxy
and HTTP_PROXY
specify the proxy server to use for
http:// urls. Use the format hostname:port
. If no port is used a
default of 1080 will be used. If both are set the lower case one takes
precedence.
https_proxy
and HTTPS_PROXY
specify the proxy server to use for
https:// urls. Use the format hostname:port
. If no port is used a
default of 1080 will be used. If both are set the lower case one takes
precedence.
no_proxy
and NO_PROXY
specify a comma separated list of
postfixes of hostnames for which not to use the proxy
server. E.g. the value "localhost,127.0.0.1" will make requests
to both "localhost" and "127.0.0.1" not use a proxy. If both are set
the lower case one takes precedence.
To activate this way of resolving proxies assign this function to the findProxy property on the HttpClient.
HttpClient client = new HttpClient();
client.findProxy = HttpClient.findProxyFromEnvironment;
If you don't want to use the system environment you can use a different one by wrapping the function.
HttpClient client = new HttpClient();
client.findProxy = (url) {
return HttpClient.findProxyFromEnvironment(
url, {"http_proxy": ..., "no_proxy": ...});
}
If a proxy requires authentication it is possible to configure
the username and password as well. Use the format
username:password@hostname:port
to include the username and
password. Alternatively the API addProxyCredentials can be used
to set credentials for proxies which require authentication.
Source
/**
* Function for resolving the proxy server to be used for a HTTP
* connection from the proxy configuration specified through
* environment variables.
*
* The following environment variables are taken into account:
*
* http_proxy
* https_proxy
* no_proxy
* HTTP_PROXY
* HTTPS_PROXY
* NO_PROXY
*
* [:http_proxy:] and [:HTTP_PROXY:] specify the proxy server to use for
* http:// urls. Use the format [:hostname:port:]. If no port is used a
* default of 1080 will be used. If both are set the lower case one takes
* precedence.
*
* [:https_proxy:] and [:HTTPS_PROXY:] specify the proxy server to use for
* https:// urls. Use the format [:hostname:port:]. If no port is used a
* default of 1080 will be used. If both are set the lower case one takes
* precedence.
*
* [:no_proxy:] and [:NO_PROXY:] specify a comma separated list of
* postfixes of hostnames for which not to use the proxy
* server. E.g. the value "localhost,127.0.0.1" will make requests
* to both "localhost" and "127.0.0.1" not use a proxy. If both are set
* the lower case one takes precedence.
*
* To activate this way of resolving proxies assign this function to
* the [findProxy] property on the [HttpClient].
*
* HttpClient client = new HttpClient();
* client.findProxy = HttpClient.findProxyFromEnvironment;
*
* If you don't want to use the system environment you can use a
* different one by wrapping the function.
*
* HttpClient client = new HttpClient();
* client.findProxy = (url) {
* return HttpClient.findProxyFromEnvironment(
* url, {"http_proxy": ..., "no_proxy": ...});
* }
*
* If a proxy requires authentication it is possible to configure
* the username and password as well. Use the format
* [:username:password@hostname:port:] to include the username and
* password. Alternatively the API [addProxyCredentials] can be used
* to set credentials for proxies which require authentication.
*/
static String findProxyFromEnvironment(Uri url,
{Map<String, String> environment}) {
return _HttpClient._findProxyFromEnvironment(url, environment);
}