#python #qt4 #pyqt4
#питон #qt4 #pyqt4 #python
Вопрос:
Я хочу прочитать заголовки из, rawHeaderList
используя QNetworkReply
, как выполнить это действие? Я пытаюсь выполнить итерацию, но он говорит, что QNetworkRaply
объект не может быть повторен, говорит простая печать <PyQt4.QtNetwork.QNetworkReply object at 0x1837958>
.
Вот мой код
...
request = QNetworkRequest(QUrl('http://www.kg'))
manager = QNetworkAccessManager()
reply = manager.get(request)
'''
How to get the list of headers?
'''
Султан
Ответ №1:
Много способов. Вы можете использовать reply.rawHeaderPairs()
, например:
import pprint, sys
from PyQt4 import QtCore, QtNetwork
app = QtCore.QCoreApplication(sys.argv)
request = QtNetwork.QNetworkRequest(QtCore.QUrl("http://stackoverflow.com"))
manager = QtNetwork.QNetworkAccessManager()
reply = manager.get(request)
while not reply.isFinished():
app.processEvents()
try:
# for Qt 4.7 and higher:
pprint.pprint(reply.rawHeaderPairs())
except AttributeError:
# for Qt < 4.7:
for header in reply.rawHeaderList():
pprint.pprint((header, reply.rawHeader(header)))
Смотрите также QNetworkReply
документацию, особенно rawHeader
, rawHeaderList
, header
и другие методы.
Редактировать примечание: Я обновил пример, чтобы сделать его совместимым со старыми версиями Qt / PyQt (до версии 4.7).
Комментарии:
1. Этот код выдает ошибку:
AttributeError: 'QNetworkReply' object has no attribute 'rawHeaderPairs'
2. Какую версию PyQt4 вы используете? Этот код отлично работает на моей машине с PyQt4 4.8.3. Документы предполагают, что rawHeaderPairs существует в версиях Qt 4.7 и выше.
3. В любом случае, пример обновления, теперь должен работать также с более ранними версиями Qt.