我正在使用 QNetworkAccessManager 模块,它适用于 HTTP 请求,但是当我尝试执行 https 请求时,它失败并返回:
PySide2.QtNetwork.QNetworkReply.NetworkError.UnknownNetworkError
and error string: TLS initialization failed
这个问题只发生在 Windows 上的 pyside2 上,但它在 Mac 操作系统上运行良好。
当我将同一段代码与 pyqt5 一起使用时,它在 Windows 和 Mac 操作系统上都运行良好。
https请求:
- Windows上的pyside2:失败
- mac上的pyside2:工作正常
- 在 Windows 上:工作正常
- mac上的pyqt5:工作正常
我坚持了一段时间,似乎找不到问题。
我正在使用 python 3.7 和 pyside2 5.15。另外,我用 pyside2 5.12.6 进行了测试,并且发生了同样的错误。
from PySide2 import QtNetwork
from PySide2 import QtCore
import sys, json
class Example:
def __init__(self):
self.nam = QtNetwork.QNetworkAccessManager()
self.nam.finished.connect(self.handle_response)
def do_request(self):
url = 'https://httpbin.org/get'
req = QtNetwork.QNetworkRequest(QtCore.QUrl(url))
self.nam.get(req)
def handle_response(self, reply):
er = reply.error()
if er == QtNetwork.QNetworkReply.NoError:
bytes_string = reply.readAll()
print(str(bytes_string, 'utf-8'))
else:
print(f'Error occurred: {er}: {reply.errorString()}')
QtCore.QCoreApplication.quit()
def main():
app = QtCore.QCoreApplication([])
ex = Example()
ex.do_request()
sys.exit(app.exec_())
if __name__ == "__main__":
main()