在python中向HTTP / 1和HTTP / 2发出请求是否有任何区别。
我可以在python中进行HTTP / 1.x调用,如
url = 'http://someURL'
values = {'param1' : 'key',
'param2' : 'key2'}
data = urllib.urlencode(values)
print data
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
print the_page
python是否支持默认创建HTTP / 2,或者我应该添加任何额外的内容。
答案 0 :(得分:5)
正如其他人在问题的评论中提到的那样,requests
库不支持HTTP / 2.
来自requests
图书馆documentation:
请求允许您发送有机草草 HTTP / 1.1 请求,而无需手工劳动。
截至目前,我所知道的唯一一个Python的HTTP / 2客户端是hyper
,引用了文档:
支持Python 3.4和Python 2.7.9,可以说HTTP / 2和HTTP / 1.1
答案 1 :(得分:2)
作为参考,从2019年起,另一个支持HTTP / 2的库为HTTPX。
HTTPX是用于Python 3的功能齐全的HTTP客户端,它提供同步和异步API,并支持HTTP / 1.1和HTTP / 2。
这至少需要Python 3.6。但是,在撰写2020年时,Python 2已经停产,因此Python 3.6对任何用户都应该可以。
答案 2 :(得分:0)
将hyper
与requests
模块一起使用。
import requests
from hyper.contrib import HTTP20Adapter
s = requests.Session()
s.mount('https://http2bin.org', HTTP20Adapter())
r = s.get('https://http2bin.org/get')
print(r.status_code)
https://hyper.readthedocs.io/en/latest/quickstart.html#requests-integration