diff options
author | Martin Panter <vadmium+py@gmail.com> | 2016-04-30 01:30:57 +0000 |
---|---|---|
committer | Martin Panter <vadmium+py@gmail.com> | 2016-04-30 01:30:57 +0000 |
commit | 15aa2b3334b13dd634ffe3fa99fc824a883e7ee7 (patch) | |
tree | 616b5991b597c7e41bf207d1e6ad6950732b40ac /Lib/urllib/request.py | |
parent | 2a2f97b59fc39bd426e268dc4aa5eb943fe24331 (diff) | |
parent | 0d46dac796c2362b5504eca80e9b6c4524826866 (diff) | |
download | cpython-15aa2b3334b13dd634ffe3fa99fc824a883e7ee7.tar.gz |
Issue #26864: Merge no_proxy fixes from 3.5
Diffstat (limited to 'Lib/urllib/request.py')
-rw-r--r-- | Lib/urllib/request.py | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index b28cd60158..c519c2d403 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -133,11 +133,71 @@ __all__ = [ ] # used in User-Agent header sent -__version__ = sys.version[:3] +__version__ = '%d.%d' % sys.version_info[:2] _opener = None def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None): + '''Open the URL url, which can be either a string or a Request object. + + *data* must be a bytes object specifying additional data to be sent to the + server, or None if no such data is needed. data may also be an iterable + object and in that case Content-Length value must be specified in the + headers. Currently HTTP requests are the only ones that use data; the HTTP + request will be a POST instead of a GET when the data parameter is + provided. + + *data* should be a buffer in the standard application/x-www-form-urlencoded + format. The urllib.parse.urlencode() function takes a mapping or sequence + of 2-tuples and returns an ASCII text string in this format. It should be + encoded to bytes before being used as the data parameter. + + urllib.request module uses HTTP/1.1 and includes a "Connection:close" + header in its HTTP requests. + + The optional *timeout* parameter specifies a timeout in seconds for + blocking operations like the connection attempt (if not specified, the + global default timeout setting will be used). This only works for HTTP, + HTTPS and FTP connections. + + If *context* is specified, it must be a ssl.SSLContext instance describing + the various SSL options. See HTTPSConnection for more details. + + The optional *cafile* and *capath* parameters specify a set of trusted CA + certificates for HTTPS requests. cafile should point to a single file + containing a bundle of CA certificates, whereas capath should point to a + directory of hashed certificate files. More information can be found in + ssl.SSLContext.load_verify_locations(). + + The *cadefault* parameter is ignored. + + For http and https urls, this function returns a http.client.HTTPResponse + object which has the following HTTPResponse Objects methods. + + For ftp, file, and data urls and requests explicitly handled by legacy + URLopener and FancyURLopener classes, this function returns a + urllib.response.addinfourl object which can work as context manager and has + methods such as: + + * geturl() - return the URL of the resource retrieved, commonly used to + determine if a redirect was followed + + * info() - return the meta-information of the page, such as headers, in the + form of an email.message_from_string() instance (see Quick Reference to + HTTP Headers) + + * getcode() - return the HTTP status code of the response. Raises URLError + on errors. + + Note that *None& may be returned if no handler handles the request (though + the default installed global OpenerDirector uses UnknownHandler to ensure + this never happens). + + In addition, if proxy settings are detected (for example, when a *_proxy + environment variable like http_proxy is set), ProxyHandler is default + installed and makes sure the requests are handled through the proxy. + + ''' global _opener if cafile or capath or cadefault: if context is not None: |