diff --git a/requests/adapters.py b/requests/adapters.py index 77badc7f..e065c759 100644 --- a/requests/adapters.py +++ b/requests/adapters.py @@ -206,7 +206,10 @@ class HTTPAdapter(BaseAdapter): conn = self.proxy_manager[proxy].connection_from_url(url) else: - conn = self.poolmanager.connection_from_url(url.lower()) + # Only scheme should be lower case + parsed = urlparse(url) + url = parsed.geturl() + conn = self.poolmanager.connection_from_url(url) return conn @@ -232,7 +235,7 @@ class HTTPAdapter(BaseAdapter): :param proxies: A dictionary of schemes to proxy URLs. """ proxies = proxies or {} - scheme = urlparse(request.url).scheme.lower() + scheme = urlparse(request.url).scheme proxy = proxies.get(scheme) if proxy and scheme != 'https': diff --git a/requests/sessions.py b/requests/sessions.py index 175712f9..8aff5913 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -12,7 +12,7 @@ import os from collections import Mapping from datetime import datetime -from .compat import cookielib, OrderedDict, urljoin, urlparse, urlunparse, builtin_str +from .compat import cookielib, OrderedDict, urljoin, urlparse, builtin_str from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar from .models import Request, PreparedRequest from .hooks import default_hooks, dispatch_hook @@ -94,9 +94,7 @@ class SessionRedirectMixin(object): # The scheme should be lower case... parsed = urlparse(url) - parsed = (parsed.scheme.lower(), parsed.netloc, parsed.path, - parsed.params, parsed.query, parsed.fragment) - url = urlunparse(parsed) + url = parsed.geturl() # Facilitate non-RFC2616-compliant 'location' headers # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource')