2010-05-28 2 views
4

J'intègre WebKit (via Qt) dans une application. Au lieu de demander à WebKit de récupérer des scripts, des fichiers CSS et des images via des URL, je souhaite que mon application les fournisse (par exemple, récupérée à partir d'une base de données).Comment charger des scripts, des styles et des images à partir d'une source autre que l'URL?

Par exemple, une page Web « régulière » peut contenir cette balise:

<IMG src="photos/album1/123456.jpg"> 

Au lieu de WebKit aller chercher cette image à partir d'un serveur ou le système de fichiers, je préférerais une sorte de rappel qui permet ma demande pour fournir cette image.

Comment puis-je accomplir ceci?

Répondre

2

Peut-être que c'est un peu exagéré, mais peut-être qu'il pourrait fonctionner pour vous.

Il suffit que votre application agisse en tant que serveur HTTP. Ensuite, vous pourriez avoir des chemins comme ceci:

<IMG src="http://localhost:73617/photos/album1/123456.jpg"> 

Où est 73617 un port aléatoire, vous pouvez avoir votre application écouter sur un autre port. Ensuite, lorsque votre application récupère la demande de l'image, elle la récupère où vous le souhaitez. Cela implique toujours un serveur mais au moins vous avez un contrôle complet sur l'endroit où vous obtenez vos ressources. Ainsi, WebKit voit l'URL dans l'image, envoie une requête, votre application reçoit la demande, lit la ressource et renvoie la ressource. Donc, fondamentalement, vous l'obtenez toujours à partir de votre application.

Espérons que cela aide.

+0

Merci. J'ai pensé à localhost, mais j'espérais qu'il y aurait un moyen plus simple. Comment puis-je implémenter mon serveur? S'agit-il simplement de créer une socket et de servir des requêtes? –

+1

En effet, il suffit d'écouter sur un certain port en créant un socket. Vous devez également implémenter le protocole HTTP. Pas tout bien sûr. Vous auriez besoin d'implémenter la commande GET, peut-être HEAD, et c'est tout. Ne devrait pas prendre longtemps. Vous devez simplement analyser les commandes HTTP et renvoyer les en-têtes de ressources appropriés. Heureusement, il y a beaucoup de documentation sur le protocole HTTP, donc vous ne devriez pas avoir de problème. – vanneto

Questions connexes