im débutant avec QtWebKit je construis simple trame web qui a chargé la page (côté serveur) et quand à partir de cette page je soumets des données que j'aime attraper la chaîne de réponse du côté C++ comment puis-je faire cela ?comment obtenir une réponse dans QtWebKit
Répondre
Vous pouvez utiliser QNetworkReply
classe pour elle. QWebPage
instances ont networkAccessManager()
méthode qui renvoie une instance QNetworkAccessManager
capable d'envoyer des demandes et de recevoir des réponses.
Vous devez rechercher son signal finished
.
void QNetworkAccessManager::finished (QNetworkReply * reply)
Ce signal est émis chaque fois qu'une en attente de réponse du réseau est terminée. Le paramètre de réponse contiendra un pointeur à la réponse qui vient de terminer.
QNetworkReply
à son tour, est un héritier de QIODevice
donc vous êtes en mesure d'appeler sa méthode readAll()
afin de recevoir les données de réponse.
Vous pouvez également trouver this question utile.
c'est juste dosn't travail .. – user63898
je veux faire exactement la même chose et cette méthode ne semble pas fonctionner: lorsque le signal est émis terminé, WebKit déjà lu toutes les données de l'objet de réponse de sorte qu'il est tout simplement pas là. – Ghostrider
Je bricolé autour avec Qt (que je suis nouveau) et a trouvé un moyen d'attraper toutes les ressources téléchargées par WebKit. Voici comment:
1) Créez votre propre sous-classe de QNetworkAccessManager
2) Dans votre classe dérivée, substituez fonction virtuelle createRequest
3) la mise en œuvre de la classe de base d'appel pour obtenir l'objet de réponse. Après cela, vous pouvez regarder l'URL (ou d'autres paramètres) et déterminer si vous avez besoin pour capturer cette ressource particulière ou non
4) si vous - connectez le signal readyRead à une fente qui capture les données
5) dans cette fonction appel à sous peek de lire des données afin que WebKit reçoivent les données aussi
6) Après avoir créé l'objet QWebPage, appelez setNetworkAccessManager et passer une instance nouvellement créée de votre sous-classe de l'étape 1)
C'est tout - profitez-en!
bonne chose à propos de cette approche est qu'il semble que cela prend soin de Content-Encoding: gzip et dégonfler à ce stade, donc vous n'avez pas besoin de décompresser les données vous-même – Ghostrider
Démarrer en utilisant plus de signes de ponctuation et moins blancs. Améliorerait la lisibilité et la compréhensibilité. –