2010-09-07 9 views
7

Sto lavorando con PyQt4 e QtWebKit e nella richiesta della pagina Web è necessario inviare un'intestazione "Host" personalizzata insieme alla richiesta HTTP standard. Non vedo alcuna opzione per aggiungere intestazioni personalizzate alla richiesta, ma questo è tutto nuovo per me quindi spero di perdere qualcosa. Sto cercando qui:Invio di un'intestazione personalizzata insieme alla richiesta qtwebkit

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

Qualsiasi consiglio sarebbe molto apprezzato.

risposta

11

È possibile impostare le intestazioni sul QNetworkRequest che viene inviato:

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

Per utilizzare tale richiesta personalizzato durante il caricamento di una pagina, utilizzare il sovraccarico load funzione di:

myWebView->load(request); 
+0

Sostituisce tutte le intestazioni predefinite o semplicemente aggiunge e sostituisce le intestazioni esistenti? – lennysan

+0

Qualche idea sul perché si bloccherebbe quando uso "Host: mysite.com" ma funziona bene quando uso "Host: www.mysite.com"? Mi aspetterei che il webserver rispondesse in entrambi i casi, ma nel primo caso la chiamata rimane lì indefinitamente. – lennysan

+0

Questo comportamento dipende dal server Web utilizzato. Quando un server supporta più host (virtuali), deve utilizzare l'intestazione 'host' per determinare a quale host virtuale deve essere inviata la richiesta. –

3

Se si desidera applicare questo a tutte le richieste di QtWebKit rende, è possibile sottoclasse QNetworkAccessManager e reimplementare la sua funzione createRequest() per modificare le intestazioni di conseguenza.

+0

Potrebbe dirci come è possibile implementare se createRequest() accetta QNetworkRequest di riferimento const? Come posso immaginare setHeader() o setRawHeader() della corrispondente QNetworkRequest dovrebbe essere chiamato. – user2198121