2016-04-29 8 views
0

Hallo ich baue eine Desktop-Anwendung in PyQt Python und haben einen Web-Browser geladen in diesem, jetzt möchte ich Funktionen von http Fox (Firefox-Plugin) hinzufügen, um die geladenen URLs mit der Anfrage anzuzeigen übergeben und andere Header mit jeder URL die gleichen wie in http Fox zugeordnet.Zeige Header in QWebview Browser Pyqt Python

Ich habe den Code aus dem Laden der URLs geschrieben, aber keine Möglichkeit gefunden, die anderen Header beim Klick auf jede URL anzuzeigen. Ich habe in Qwebview von Cookie Jar gehört, weiß aber nicht, wie ich mit jeder geladenen URL anzeigen soll.

Mein Code ist: -

class Manager(QNetworkAccessManager): 
def __init__(self, table): 
    QNetworkAccessManager.__init__(self) 
    self.finished.connect(self._finished) 
    self.table = table 

def _finished(self, reply): 
    headers = reply.rawHeaderPairs() 
    headers = {str(k):str(v) for k,v in headers} 
    content_type = headers.get("Content-Type") 
    url = reply.url().toString() 
    status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) 
    status, ok = status.toInt() 
    self.table.update([url, str(status), content_type]) 

i somethinglike-

wollen
[![here on the upper part we have loaded URLs and below that we can see the header, i have written the code for loaded URLs but how to show the headers][1]][1] 

Antwort

1

Ist das, was Sie suchen?

import logging 
import sys 
from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest 
from PyQt4.QtCore import QUrl, QEventLoop 

log = logging.getLogger(__name__) 


class Manager(QNetworkAccessManager): 
    def __init__(self, table=list()): 
     QNetworkAccessManager.__init__(self) 
     self.finished.connect(self._finished) 
     self.table = table 

    def _finished(self, reply): 
     headers = reply.rawHeaderPairs() 
     headers = {str(k): str(v) for k, v in headers} 
     content_type = headers.get("Content-Type") 
     url = reply.url().toString() 
     status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) 
     status, ok = status.toInt() 
     self.table.append([str(url), str(status), content_type]) 
     log.info(self.table) 
     request = reply.request() 
     log.info(request.rawHeader("User-Agent")) 
     method = reply.operation() 
     if method == QNetworkAccessManager.GetOperation: 
      log.info("get") 
      request.url().queryItems() 
     if method == QNetworkAccessManager.PostOperation: 
      log.info("post") 

def test(): 
    manager = Manager() 
    log.info("Sending request") 
    manager.get(QNetworkRequest(QUrl("http://www.google.com/"))) 

    # just for testing purpose to wait for the request to finish 
    l = QEventLoop() 
    manager.finished.connect(l.quit) 
    l.exec_() 

if __name__ == '__main__': 
    logging.basicConfig(level=logging.DEBUG) 

    app = QApplication(sys.argv) 
    test() 
+0

Dank für die Hilfe, möge auch, dass ich wissen, wie die User-Agenten mit der Bitte, in Gang zu bringen, i „print reply.rawHeader (“ User-Agent „)“ versucht, aber einen leeren String zurück . –

+0

werden Sie mir bitte helfen, ich habe auch eine Frage zu diesem http://stackoverflow.com/questions/36995190/how-to-get-user-agent-and-cookies-going-with-a-request-in aufgeworfen -qwebview-pyqt-python –

+0

in dem von Ihnen geschriebenen Code, ist es möglich, die Request-Methode ("GET" oder "POST") zu sehen und Parameter mit den anderen Headern zu posten? –