2010-09-07 5 views
7

Ich mache einige Arbeit mit PyQt4 und QtWebKit, und in der Webseite Anfrage muss eine benutzerdefinierte "Host" Header zusammen mit der Standard-HTTP-Anfrage senden. Ich sehe keine Optionen zum Hinzufügen von benutzerdefinierten Headern zu der Anfrage, aber das ist alles neu für mich, also hoffe ich, dass mir etwas fehlt. Ich suche hier:Senden eines benutzerdefinierten Headers zusammen mit qtwebkit Anfrage

http://doc.qt.digia.com/4.6/qwebsettings.html

Jede Beratung wäre sehr dankbar.

Antwort

11

Sie können Header auf dem QNetworkRequest gesetzt, die gesendet wird:

QNetworkRequest request; 
request.setUrl(QUrl("http://qt.nokia.com")); 
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0"); 

dass individuelle Anfrage zu verwenden, wenn das Laden einer Seite, verwenden Sie die überladene load Funktion:

myWebView->load(request); 
+0

Überschreibt dies alle Standard-Header, oder fügt er bestehende Header einfach hinzu und ersetzt sie? – lennysan

+0

Jede Idee, warum es hängen würde, wenn ich einen "Host: mysite.com" verwende, funktioniert aber gut, wenn ich "Host: www.mysite.com" verwende? Ich würde erwarten, dass der Webserver in beiden Fällen antwortet, aber im ersten Fall sitzt der Anruf nur auf unbestimmte Zeit. – lennysan

+0

Dieses Verhalten hängt vom verwendeten Webserver ab. Wenn ein Server mehrere (virtuelle) Hosts unterstützt, muss er den Header 'host' verwenden, um zu bestimmen, an welchen virtuellen Host die Anforderung gesendet werden soll. –

3

Wenn Sie sich bewerben möchten dies zu alle Anforderungen QtWebKit macht, können Sie QNetworkAccessManager Unterklasse createRequest() Funktion neu zu implementieren und Kopfzeilen entsprechend ändern.

+0

Könnten Sie bitte sagen, wie es möglich ist, implementiert zu werden, wenn createRequest() QNetworkRequest durch const-Referenz akzeptiert? Wie ich mir vorstellen kann, sollte setHeader() oder setRawHeader() des entsprechenden QNetworkRequest aufgerufen werden. – user2198121