2011-04-17 79 views
1

我想從rawHeaderList使用QNetworkReply讀取標題如何執行此操作?我嘗試迭代,但它說QNetworkRaply對象不可迭代,簡單打印表示<PyQt4.QtNetwork.QNetworkReply object at 0x1837958>PyQt4:從rawHeaderList提取值

這裏是我的代碼

 

... 
request = QNetworkRequest(QUrl('http://www.kg')) 
manager = QNetworkAccessManager() 

reply = manager.get(request) 

''' 
How to get the list of headers? 
''' 
 

蘇丹

回答

2

方法很多。您可以使用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文檔,尤其是rawHeaderrawHeaderListheader等方法。

編輯說明:我已經更新了示例以使其與舊版Qt/PyQt版本兼容(4.7版之前)。

+0

此代碼給出了一個錯誤:'AttributeError:'QNetworkReply'對象沒有屬性'rawHeaderPairs'' – sultan 2011-04-17 18:31:57

+0

您正在使用哪個版本的PyQt4?這段代碼在PyQt4 4.8.3的機器上工作正常。 Docs建議rawHeaderPairs存在於Qt 4.7及更高版本中。 – abbot 2011-04-17 19:21:30

+0

無論如何,更新示例現在應該也可以用於早期的Qt版本。 – abbot 2011-04-17 19:27:59