Kaydet (Commit) 01fe5fa8 authored tarafından Senthil Kumaran's avatar Senthil Kumaran

Fix issue14826 - make urllib.request.Request quoted url consistent with URLOpener open method.

Patch contributed by Stephen Thorne.
üst 5356af8c
...@@ -1325,6 +1325,12 @@ class RequestTests(unittest.TestCase): ...@@ -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: ...@@ -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: ...@@ -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 ...@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment