findProxyFromEnvironment method Null safety

String findProxyFromEnvironment(
  1. Uri url,
  2. {Map<String, String>? environment}
)

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 = 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 = HttpClient();
client.findProxy = (url) {
  return HttpClient.findProxyFromEnvironment(
      url, environment: {"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.

Implementation

static String findProxyFromEnvironment(Uri url,
    {Map<String, String>? environment}) {
  HttpOverrides? overrides = HttpOverrides.current;
  if (overrides == null) {
    return _HttpClient._findProxyFromEnvironment(url, environment);
  }
  return overrides.findProxyFromEnvironment(url, environment);
}