mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method.
Patch contributed by Stephen Thorne.
This commit is contained in:
parent
5356af8c48
commit
01fe5fa8ea
3 changed files with 14 additions and 2 deletions
|
@ -1325,6 +1325,12 @@ class RequestTests(unittest.TestCase):
|
||||||
req = Request("<URL:http://www.python.org>")
|
req = Request("<URL:http://www.python.org>")
|
||||||
self.assertEqual("www.python.org", req.get_host())
|
self.assertEqual("www.python.org", req.get_host())
|
||||||
|
|
||||||
|
def test_quoted_full_url(self):
|
||||||
|
Request = urllib2.Request
|
||||||
|
request = Request('http://www.python.org/foo bar')
|
||||||
|
self.assertEqual(request.get_full_url(),
|
||||||
|
'http://www.python.org/foo%20bar')
|
||||||
|
|
||||||
def test_url_fragment(self):
|
def test_url_fragment(self):
|
||||||
req = Request("http://www.python.org/?qs=query#fragment=true")
|
req = Request("http://www.python.org/?qs=query#fragment=true")
|
||||||
self.assertEqual("/?qs=query", req.get_selector())
|
self.assertEqual("/?qs=query", req.get_selector())
|
||||||
|
|
|
@ -110,7 +110,7 @@ except ImportError:
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
|
|
||||||
from urllib import (unwrap, unquote, splittype, splithost, quote,
|
from urllib import (unwrap, unquote, splittype, splithost, quote,
|
||||||
addinfourl, splitport, splittag,
|
addinfourl, splitport, splittag, toBytes,
|
||||||
splitattr, ftpwrapper, splituser, splitpasswd, splitvalue)
|
splitattr, ftpwrapper, splituser, splitpasswd, splitvalue)
|
||||||
|
|
||||||
# support for FileHandler, proxies via environment variables
|
# support for FileHandler, proxies via environment variables
|
||||||
|
@ -196,7 +196,8 @@ class Request:
|
||||||
def __init__(self, url, data=None, headers={},
|
def __init__(self, url, data=None, headers={},
|
||||||
origin_req_host=None, unverifiable=False):
|
origin_req_host=None, unverifiable=False):
|
||||||
# unwrap('<URL:type://host/path>') --> 'type://host/path'
|
# unwrap('<URL:type://host/path>') --> 'type://host/path'
|
||||||
self.__original = unwrap(url)
|
self.__original = unwrap(toBytes(url))
|
||||||
|
self.__original = quote(self.__original, safe="%/:=&?~#+!$,;'@()*[]|")
|
||||||
self.__original, self.__fragment = splittag(self.__original)
|
self.__original, self.__fragment = splittag(self.__original)
|
||||||
self.type = None
|
self.type = None
|
||||||
# self.__r_type is what's left after doing the splittype
|
# self.__r_type is what's left after doing the splittype
|
||||||
|
|
|
@ -84,6 +84,11 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #14826: Quote urls in urllib2.Request identically to how they
|
||||||
|
are quoted by urllib.URLopener. Allows urls to spaces in them to work
|
||||||
|
transparently with urllib.request.urlopen(...). Patch contributed by Stephen
|
||||||
|
Thorne.
|
||||||
|
|
||||||
- Issue #15247: FileIO now raises an error when given a file descriptor
|
- Issue #15247: FileIO now raises an error when given a file descriptor
|
||||||
pointing to a directory.
|
pointing to a directory.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue