diff options
author | Senthil Kumaran <senthil@uthcode.com> | 2012-03-15 01:08:13 (GMT) |
---|---|---|
committer | Senthil Kumaran <senthil@uthcode.com> | 2012-03-15 01:08:13 (GMT) |
commit | 87684e6eeab154bf7d8775b767e2558ddf659745 (patch) | |
tree | 33d75a030e9abf280d91885f7dd79499fe0044b3 | |
parent | 4552b2eccce8333521895d5212e324feb1dcc776 (diff) | |
download | cpython-87684e6eeab154bf7d8775b767e2558ddf659745.zip cpython-87684e6eeab154bf7d8775b767e2558ddf659745.tar.gz cpython-87684e6eeab154bf7d8775b767e2558ddf659745.tar.bz2 |
Fix the wrong urllib exampls which use str for POST data. Closes Issue11261
-rw-r--r-- | Doc/howto/urllib2.rst | 4 | ||||
-rw-r--r-- | Doc/library/urllib.request.rst | 23 |
2 files changed, 14 insertions, 13 deletions
diff --git a/Doc/howto/urllib2.rst b/Doc/howto/urllib2.rst index 76286bd..567c1b1 100644 --- a/Doc/howto/urllib2.rst +++ b/Doc/howto/urllib2.rst @@ -108,6 +108,7 @@ library. :: 'language' : 'Python' } data = urllib.parse.urlencode(values) + data = data.encode('utf-8') # data should be bytes req = urllib.request.Request(url, data) response = urllib.request.urlopen(req) the_page = response.read() @@ -172,7 +173,8 @@ Explorer [#]_. :: 'language' : 'Python' } headers = { 'User-Agent' : user_agent } - data = urllib.parse.urlencode(values) + data = urllib.parse.urlencode(values) + data = data.encode('utf-8') req = urllib.request.Request(url, data, headers) response = urllib.request.urlopen(req) the_page = response.read() diff --git a/Doc/library/urllib.request.rst b/Doc/library/urllib.request.rst index b51ce3f..24e2444 100644 --- a/Doc/library/urllib.request.rst +++ b/Doc/library/urllib.request.rst @@ -138,14 +138,13 @@ The following classes are provided: *url* should be a string containing a valid URL. - *data* may be a string specifying additional data to send to the - server, or ``None`` if no such data is needed. 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 - :mimetype:`application/x-www-form-urlencoded` format. The - :func:`urllib.parse.urlencode` function takes a mapping or sequence - of 2-tuples and returns a string in this format. + *data* may be a bytes object specifying additional data to send to the + server, or ``None`` if no such data is needed. 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 :mimetype:`application/x-www-form-urlencoded` format. The + :func:`urllib.parse.urlencode` function takes a mapping or sequence of + 2-tuples and returns a string in this format. *headers* should be a dictionary, and will be treated as if :meth:`add_header` was called with each key and value as arguments. @@ -1122,10 +1121,10 @@ some point in the future. size in response to a retrieval request. If the *url* uses the :file:`http:` scheme identifier, the optional *data* - argument may be given to specify a ``POST`` request (normally the request type - is ``GET``). The *data* argument must in standard - :mimetype:`application/x-www-form-urlencoded` format; see the :func:`urlencode` - function below. + argument may be given to specify a ``POST`` request (normally the request + type is ``GET``). The *data* argument must be a bytes object in standard + :mimetype:`application/x-www-form-urlencoded` format; see the + :func:`urlencode` function below. :func:`urlretrieve` will raise :exc:`ContentTooShortError` when it detects that the amount of data available was less than the expected amount (which is the |