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'。子類可以通過在類中設置方法屬性來指示不同的默認方法。「