2010-09-07 17 views
7

Estoy trabajando con PyQt4 y QtWebKit, y en la solicitud de la página web necesito enviar un encabezado "Host" personalizado junto con la solicitud HTTP estándar. No veo ninguna opción para agregar encabezados personalizados a la solicitud, pero esto es nuevo para mí, así que espero perder algo. Estoy buscando aquí:Enviando un encabezado personalizado junto con la solicitud qtwebkit

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

Cualquier consejo sería muy apreciada.

Respuesta

11

Puede establecer cabeceras en la QNetworkRequest que se envía:

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

usar que la petición de encargo al cargar una página, utilice la sobrecarga load función:

myWebView->load(request); 
+0

¿Esto reemplaza a todos los encabezados predeterminados, o solo agrega y reemplaza los encabezados existentes? – lennysan

+0

¿Alguna idea de por qué se colgaría cuando utilizo un "Host: mysite.com" pero funciona bien cuando uso "Host: www.misitio.com"? Esperaría que el servidor web responda en cualquier caso, pero en el primer caso la llamada solo queda ahí indefinidamente. – lennysan

+0

Ese comportamiento depende del servidor web que se esté utilizando. Cuando un servidor admite varios hosts (virtuales), debe usar el encabezado 'host' para determinar a qué host virtual debe enviarse la solicitud. –

3

Si desea aplicar esto a todas las solicitudes QtWebKit hace, puede subclase QNetworkAccessManager y volver a implementar su función createRequest() para modificar los encabezados en consecuencia.

+0

¿Podría decirnos cómo se puede implementar si createRequest() acepta QNetworkRequest por referencia de referencia? Como puedo imaginar, deben llamarse setHeader() o setRawHeader() de la QNetworkRequest correspondiente. – user2198121

Cuestiones relacionadas