diff --git a/requests/models.py b/requests/models.py index d39cf81b43..52cb15ec00 100644 --- a/requests/models.py +++ b/requests/models.py @@ -114,9 +114,9 @@ def __init__(self, if 'HTTPS_PROXY' in os.environ: self.proxies['https'] = os.environ['HTTPS_PROXY'] - self.data, self._enc_data = self._encode_params(data) - self.params, self._enc_params = self._encode_params(params) - self.files, self._enc_files = self._encode_files(files) + self.data = data + self.params = params + self.files = files #: :class:`Response ` instance, containing #: content and metadata of HTTP Response, once :attr:`sent `. @@ -314,19 +314,12 @@ def _encode_params(data): Will successfully encode parameters when passed as a dict or a list of 2-tuples. Order is retained if data is a list of 2-tuples but abritrary if parameters are supplied as a dict. - - If the data supplied contains parameters, encodes each parameter in it, - and returns a list of tuples containing the encoded parameters, and a - urlencoded version of that. - - Otherwise, assumes the data is already encoded appropriately, and - returns it twice. """ if isinstance(data, bytes): - return data, data + return data if isinstance(data, str): - return data, data + return data elif hasattr(data, '__iter__'): try: dict(data) @@ -340,14 +333,14 @@ def _encode_params(data): result.append( (k.encode('utf-8') if isinstance(k, str) else k, v.encode('utf-8') if isinstance(v, str) else v)) - return result, urlencode(result, doseq=True) + return urlencode(result, doseq=True) else: - return data, data + return data def _encode_files(self, files): if (not files) or isinstance(self.data, str): - return None, None + return None try: fields = self.data.copy() @@ -365,7 +358,7 @@ def _encode_files(self, files): (body, content_type) = encode_multipart_formdata(fields) - return files, (body, content_type) + return (body, content_type) @property def full_url(self): @@ -406,11 +399,12 @@ def full_url(self): url = (urlunparse([scheme, netloc, path, params, query, fragment])) - if self._enc_params: + enc_params = self._encode_params(self.params) + if enc_params: if urlparse(url).query: - url = '%s&%s' % (url, self._enc_params) + url = '%s&%s' % (url, enc_params) else: - url = '%s?%s' % (url, self._enc_params) + url = '%s?%s' % (url, enc_params) if self.config.get('encode_uri', True): url = requote_uri(url) @@ -499,11 +493,11 @@ def send(self, anyway=False, prefetch=False): # Multi-part file uploads. if self.files: - (body, content_type) = self._enc_files + (body, content_type) = self._encode_files(self.files) else: if self.data: - body = self._enc_data + body = self._encode_params(self.data) if isinstance(self.data, str): content_type = None else: