context = ssl.create_default_context()
context.load_cert_chain(certificate, pkey)
opener = urllib.request.build_opener(urllib.request.HTTPSHandler(context=context))
response = opener.open(url, data=None)
print(response.read())
执行与数据上述代码=无自动设置方法来获得,而数据设定为别的自动设置方法,POST。蟒3.X urllib.request.HTTPSHandler重写方法GET POST
有没有办法来覆盖这种行为?
根据文档你可以使用Request.method,但我不知道如何从'opener'引用它。 https://docs.python.org/3/library/urllib.request.html
Request.method
HTTP请求方法来使用。默认情况下,它的值是None,这意味着get_method()将对要使用的方法进行正常的计算。它的值可以通过在Request子类中的类级别设置默认值,或者通过方法参数将值传递给Request构造函数来设置(因此覆盖get_method()中的默认计算)。
版本3.3中的新功能。
版本3.4中已更改:现在可以在子类中设置默认值; >以前它只能通过构造函数参数来设置。
“的方法应该是字符串,其指示将被使用(例如‘HEAD’)。如果提供,其值被存储在该方法属性,并用于通过GET_METHOD()HTTP请求方法,默认如果数据是None或'POST'则是'GET'。子类可以通过在类中设置方法属性来指示不同的默认方法。“