Когда я запускаю ваш код, я не получаю никакой ошибки, только я получаю пустой ответ.
text/html
None
0
Done
И это правильно, потому что в этом URL нет ничего контента, так как если вы используете браузермы увидим, что он перенаправляет нас на другой URL: https://sourceforge.net/projects/pyqt/
, поэтому для включения этого перенаправления анализируется атрибут ответа RedirectionTargetAttribute
.
import sys
from PyQt5 import QtCore, QtNetwork
class MainWindow(QtCore.QObject):
def __init__(self):
super().__init__()
target = "http://pyqt.sourceforge.net"
self.manager = QtNetwork.QNetworkAccessManager(self)
self.manager.finished.connect(self.on_finished)
self.start_request(target)
def start_request(self, url):
request = QtNetwork.QNetworkRequest(QtCore.QUrl(url))
self.manager.get(request)
@QtCore.pyqtSlot(QtNetwork.QNetworkReply)
def on_finished(self, reply):
redirection_target = reply.attribute(QtNetwork.QNetworkRequest.RedirectionTargetAttribute)
if reply.error():
print("There was an error. {}".format(response.errorString()))
elif redirection_target is not None:
reply.deleteLater()
print("redirection_target: {}".format(redirection_target))
self.start_request(redirection_target)
else:
print(reply.header(QtNetwork.QNetworkRequest.ContentTypeHeader))
print(reply.header(QtNetwork.QNetworkRequest.LastModifiedHeader))
print(reply.header(QtNetwork.QNetworkRequest.ContentLengthHeader))
print(reply.readAll())
reply.deleteLater()
QtCore.QCoreApplication.quit()
if __name__ == '__main__':
app = QtCore.QCoreApplication(sys.argv)
w = MainWindow()
sys.exit(app.exec_())
Вывод:
redirection_target: PyQt5.QtCore.QUrl('https://sourceforge.net/projects/pyqt/')
text/html; charset=utf-8
None
None
b'<!doctype html>\n<!-- Server: sfs-consume-8 -->\n<html class="no-js" lang="en">\n <head>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/...