μλ νμΈμ,
μμ² 2.11 μ΄νλ‘ λ΄ μ±μ λν μμ²μ μ¬μ©νλ λͺ¨λ νΈμΆμ΄ μ€λ¨λμμ΅λλ€. λλ²κΉ ν μ΄ λ²μ μ μ΄μ κ³Ό κ°μ΄ μ μ κ°μ΄ μλ ν€λλ₯Ό νμ©νμ§ μλ κ² κ°μ΅λλ€.
2.10:
In [1]: import requests
In [2]: requests.get('http://bing.com', headers={'Content-Length': 42})
Out[2]: <Response [200]>
2.11
In [1]: import requests
In [2]: requests.get('http://bing.com', headers={'Content-Length': 42})
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\utils.py in check_header_validity(header)
751 try:
--> 752 if not pat.match(value):
753 raise InvalidHeader("Invalid return character or leading space in header: %s" % name)
TypeError: expected string or bytes-like object
During handling of the above exception, another exception occurred:
InvalidHeader Traceback (most recent call last)
<ipython-input-2-ae7ec2933e34> in <module>()
----> 1 requests.get('http://bing.com', headers={'Content-Length': 42})
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\api.py in get(url, params, **kwargs)
68
69 kwargs.setdefault('allow_redirects', True)
---> 70 return request('get', url, params=params, **kwargs)
71
72
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\api.py in request(method, url, **kwargs)
54 # cases, and look like a memory leak in others.
55 with sessions.Session() as session:
---> 56 return session.request(method=method, url=url, **kwargs)
57
58
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
455 hooks = hooks,
456 )
--> 457 prep = self.prepare_request(req)
458
459 proxies = proxies or {}
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\sessions.py in prepare_request(self, request)
388 auth=merge_setting(auth, self.auth),
389 cookies=merged_cookies,
--> 390 hooks=merge_hooks(request.hooks, self.hooks),
391 )
392 return p
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\models.py in prepare(self, method, url, headers, files, data, params, auth, cookies, hooks, json)
293 self.prepare_method(method)
294 self.prepare_url(url, params)
--> 295 self.prepare_headers(headers)
296 self.prepare_cookies(cookies)
297 self.prepare_body(data, files, json)
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\models.py in prepare_headers(self, headers)
407 for header in headers.items():
408 # Raise exception on invalid header value.
--> 409 check_header_validity(header)
410 name, value = header
411 self.headers[to_native_string(name)] = value
D:\VSProjects\azure-sdk-for-python\env3.5\Lib\site-packages\requests\utils.py in check_header_validity(header)
754 except TypeError:
755 raise InvalidHeader("Header value %s must be of type str or bytes, "
--> 756 "not %s" % (value, type(value)))
757
758
InvalidHeader: Header value 42 must be of type str or bytes, not <class 'int'>
κ° μμ²μμ 'Content-Length'λ₯Ό μ μν©λλ€. μ΄μ¨λ , μλ―Έμ μ μμΈ ν€λμ μ μλ₯Ό μ¬μ©νλ κ²μ΄ λ§μ΄ λμ§ μμ΅λκΉ?
ν€λ κ°μ λν λ¬Έμμ΄μ΄ μλ κ²μ μ¬νκ²λ μμ²μ μ¬μ©νλ λ° νμ©λ λ°©λ²μ΄ μλλ©° μ΄μ λ²μ μμλ νμ©λμμ§λ§ κ·Έ μ΄νλ‘ μ΄λ₯Ό νμ©νμ§ μλ λ³κ²½μ νμ΅λλ€. μ΄λ μ£Όλ‘ ν€λκ° _μ€μ λ‘_ λ¬Έμμ΄-λ¬Έμμ΄ λ§€νμ΄κΈ° λλ¬Έμ΄κΈ°λ νμ§λ§ Requestsμ μ λ¬λ νλͺ©μ λν΄ str
λ₯Ό νΈμΆνλ μΌλ°μ μΈ μ κ·Ό λ°©μμ μ¬μ©μλ₯Ό λλΌκ² νλ μκΈ°μΉ μμ λ°©μμΌλ‘ μ€μλνλ κ²½ν₯μ΄ μκΈ° λλ¬Έμ
λλ€.
TL;DRμ λ€μκ³Ό κ°μ΅λλ€. μ, μ΄κ²μ μλμ μΌλ‘ μνλ κ²μ΄λ©° μλμ, λ²κ·ΈλΌκ³ μκ°νμ§ μμ΅λλ€.
μ°Έμ‘°: #865.
λνΈ λ¦΄λ¦¬μ€μ μ£Όμ λ³κ²½ μ¬νμΈ κ² κ°μ΅λλ€. κ·Έλ μ£ ?
κ·Έλ¦¬κ³ λΉμ μ ChangeLogμμ μ΄ κ±°λν μμ μ μ€λͺ νμ§ μμμ΅λλ€ :(
μ΄κ²μ μ£Όμ API λ³κ²½ μ¬νμ΄ μλλλ€. APIλ λ¬Έμ μ 체μ κ±Έμ³ λ¬Έμμ΄ κΈ°λ°μΌλ‘ λͺ ννκ² λ¬Έμνλμ΄ μμ΅λλ€. μλν μ λ ₯ λμ μ μμ ν¨κ» μ¬μ©νλ€λ μ¬μ€μ μ΄ μ½λλ² μ΄μ€λ API λ³κ²½μ΄ μλλΌ μ½λμ λ²κ·Έμ λλ€.
μ΄ μ€μνμ§ μμ λ³κ²½ μ¬νμ λν λ©λͺ¨λ₯Ό λ³κ²½ λ‘κ·Έμ μΆκ°νλ κ²μ΄ μ’μ΅λλ€.
@clarkbreyman-yammer λΆλͺ ν λ§νμλ©΄, μ΄κ²μ μ½κ°μ κ²½κ³μ μΌμ΄μ€μ λλ€. #3386κ³Ό #3388μμ κ°μ₯ μ΅κ·Όμ λ΄λ¦° μμ¬κ²°μ μ λ³Ό μ μμ§λ§ κΈ°λ³Έ μ£Όμ₯μ λ¬Έμμ΄μ΄ μλ ν€λκ° μλνλλ‘ _μλλμ§ μμμΌλ―λ‘ μλμ΄ μ€μ§λμλ€λ μ¬μ€μ λ°μλ€μΌ μ μλ€λ κ²μ λλ€. μ¬μ€, μ΄μ μλ κ³Όκ±°μ μλνμ§ μμμ΅λλ€.
@lmazuel νμ§λ§ μ΄κ²μ΄ λ³κ²½ λ‘κ·Έμμ λλ½λ κ²μ΄ λ§μ΅λλ€. κ·Έλ¦¬κ³ κ·Έκ²μ 100% μ μλͺ»μ λλ€. μ¬κΈ°μ νμμ ν€λ κ°μ λν λ μ격ν κ²μ¦μΌλ‘ μΈν΄ λΆμμ μΌλ‘ λ°μνμΌλ©° κ²°κ³Όμ μΌλ‘ μ»΄νμΌν λ λ³΄μ§ λͺ»νμ΅λλ€. λ³κ²½ λ‘κ·Έ. λ³κ²½ λ‘κ·Έλ₯Ό λ§λ€κ³ μΆλ€λ©΄ λ³κ²½ λ‘κ·Έλ₯Ό μ λ°μ΄νΈνλ PRμ νμν©λλ€.
κ·Έλ¦¬κ³ λΆλͺ ν νμλ©΄, μ°λ¦¬ μΈ μ¬λ λͺ¨λ μ΄ μ μ λμν©λλ€. κ±°κΈ°μ μ μλ₯Ό 보λ΄λ κ²μ΄ _ever_ μλνλ€λ μ¬μ€μ μμ ν μ΄μ΄μμ΅λλ€. μ΄μ μλ μ ν μλνμ§ μμμΌλ©° μ€λ μ μ μλνμ§ μμμΌ νλ€κ³ κ²°μ νμ΅λλ€. νμ§λ§ μ°λ¦¬λ κ·Έκ²μ _μν_ν μ μ΄ μμ΅λλ€.
μ¦, μ§μλλ κΈ°λ₯μΌλ‘ μΆκ°νλ κ²μ μ μ¬μ μΌλ‘ μ’μ μμ΄λμ΄μ΄λ©° λ΄ μ± μμ νμν λ§ν API λ³κ²½μ΄ λ κ²μ λλ€(ꡬνμ΄ μ μ΄λ£¨μ΄μ‘λ€λ©΄). κ·Έλ¬λ νμ¬μ μν©μ μμΌλ‘λ κ³μλ κ°λ₯μ±μ΄ λμ΅λλ€.
λ³κ²½ λ‘κ·Έμ λ©λͺ¨λ₯Ό μΆκ°νμ΅λλ€.
@kennethreitz κ°μ¬ν©λλ€.
λ€, μ€λͺ
κ°μ¬ν©λλ€. κ·Έμ λ°λΌ μ½λλ₯Ό μ
λ°μ΄νΈνκ² μ΅λλ€.
@kennethreitz PyPIμλ λ©λͺ¨λ₯Ό μΆκ°ν μ μλ€λ©΄ νλ₯ν κ²μ
λλ€.
@lmazuel μ!
@lmazuel μλ£ β¨π°β¨
@lmazuel ps
λ΄ μ½λλ₯Ό μμ νκ³ λ€λ₯Έ λͺ¨λ κ²μ μ μλν©λλ€. λ§€μ° λΉ λ₯Έ μλ΅ μκ°μ κ°μ¬λ립λλ€!
곡μ λ¬Έμμλ μ£Όμ λ³κ²½ μ¬νμ λν μΈκΈμ΄ μμ΅λλ€. μ λ§ μ€ν΄μ μμ§κ° μμ΅λλ€.
μ΄λ μμ² νμμ μ£Όμ λ³κ²½ μ¬νμΌλ‘ κ°μ£Όλμ§ μμΌλ©° λ¬Έμνλ λΌμ΄λΈλ¬λ¦¬ λμμ κ²½κ³μ λ§λ λ²κ·Έ μμ μΌλ‘ κ°μ£Όλ©λλ€.
str μ νμ ν€λμ μ λλ λ°©λ²μ μ 곡νλ κ²μ΄ μ’μ΅λλ€.
dict μ νμ ν€λλ₯Ό str μ νμΌλ‘ λ³νν©λλ€. κ°μ¬ν©λλ€.
2016-09-27 1:30 GMT+08:00 Nate Prewitt [email protected] :
μλ νμΈμ @COLDMOUNT https://github.com/COLDMOUNT , λΉμ μ μ°Ύμ μ μμ΅λλ€
μ¬κΈ°μ λ¬Έμ
http://docs.python-requests.org/en/master/user/quickstart/#custom -headers
μ¬μ©μ μ μ ν€λμ λν λΉ λ₯Έ μμ μΉμ μ λ§μ§λ§ λ¨λ½μ μμ΅λλ€. μ°λ¦¬
λν λ³κ²½ μ¬νμ (HISTORY.rst)[ https://github.
com/kennethreitz/requests/blob/master/HISTORY.rst] 2.11.0μ©
μμ²μ λ³κ²½ λ‘κ·Έ.β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/kennethreitz/requests/issues/3477#issuecomment -249638650,
λλ μ€λ λ μμκ±°
https://github.com/notifications/unsubscribe-auth/ARIA89wU7tKL8Br2WWU6lJy8HEbNr72Vks5quaAE3gaJpZM4JffFG
.
λλ dict μ νμ ν€λλ₯Ό str μ νμΌλ‘ λ³ννλ λ°©λ²
무μμ κΈ°λ€λ¦½λλ€? μ΄μ μ ν€λλ₯Ό μ΄λ»κ² 보λμ΅λκΉ?
νμ΄μ§μ κ°μ΄λμ λ§μ°¬κ°μ§λ‘ --
http://docs.python-requests.org/en/master/user/quickstart/ -- "λ§μ½
μμ²μ HTTP ν€λλ₯Ό μΆκ°νλ €λ©΄ ν€λμ dictλ₯Ό μ λ¬νκΈ°λ§ νλ©΄ λ©λλ€.
맀κ°λ³μ." νμ§λ§ μ΄μ dict μ νμ λ μ΄μ νμ©λμ§ μμΌλ©° strμ
μ νμ μ΄λ»κ² μκ²Όμ΅λκΉ?
2016-09-27 17:51 GMT+08:00 Cory Benfield [email protected] :
λλ dict μ νμ ν€λλ₯Ό str μ νμΌλ‘ λ³ννλ λ°©λ²
무μμ κΈ°λ€λ¦½λλ€? μ΄μ μ ν€λλ₯Ό μ΄λ»κ² 보λμ΅λκΉ?
β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/kennethreitz/requests/issues/3477#issuecomment -249819028,
λλ μ€λ λ μμκ±°
https://github.com/notifications/unsubscribe-auth/ARIA8_ZPJmzxH2lWmpTvSJ3PvHE7jlpvks5quOcrgaJpZM4JffFG
.
@COLDMOUNT dict
μ(λ) _μ λμ μΌλ‘_ μΉμΈλμμΌλ©°, μ΄λ₯Ό μ ν λ³κ²½νμ§ μμμ΅λλ€. μ°λ¦¬κ° λ³κ²½ν κ²μ ν΄λΉ dictμ ν€μ κ°μ΄ μ΄μ λ¬Έμμ΄μ΄μ΄μΌ νλ€λ κ²μ
λλ€. μ΄μ μλ μ€μλ‘ λͺ κ°μ§ λ€λ₯Έ μ νμ΄ μμ μ μμμ§λ§ μ§κΈμ ν΄κ²°λμμ΅λλ€. λ¬Έμλ₯Ό λ³κ²½ν νμκ° μμ΅λλ€.
μκ² μ΄, λ©μ Έ! κ°μ¬ ν΄μ! :)
2016-09-27 18:23 GMT+08:00 Cory Benfield [email protected] :
@COLDMOUNT https://github.com/COLDMOUNT μ¬μ μ _μ λμ μΌλ‘_ νμ©λ©λλ€.
μ°λ¦¬λ κ·Έκ²μ μ ν λ³κ²½νμ§ μμμ΅λλ€. μ°λ¦¬κ° λ³κ²½ν κ²μ ν€μ
ν΄λΉ dictμ κ°μ μ΄μ λ¬Έμμ΄μ΄μ΄μΌ ν©λλ€. μ΄μ μλ κ°λ₯νμ΅λλ€.
μ€μλ‘ λͺ κ°μ§ λ€λ₯Έ μ νμΌλ‘ λ°λμμ§λ§ μ§κΈμ ν΄κ²°λμμ΅λλ€. NS
λ¬Έμλ₯Ό λ³κ²½ν νμκ° μμ΅λλ€.β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/kennethreitz/requests/issues/3477#issuecomment -249825918,
λλ μ€λ λ μμκ±°
https://github.com/notifications/unsubscribe-auth/ARIA8z0jZ-ovBtvFWl4hTXnkk_kJXobrks5quO6ggaJpZM4JffFG
.
κ°μ₯ μ μ©ν λκΈ
λνΈ λ¦΄λ¦¬μ€μ μ£Όμ λ³κ²½ μ¬νμΈ κ² κ°μ΅λλ€. κ·Έλ μ£ ?