J'ai des problèmes pour accéder au contenu des objets QNetworkReply. Le contenu semble être vide ou nul. D'après les docs (traduction de C++ en java), je pense que je l'ai mis en place correctement, mais en vain. De plus, une "erreur inconnue" est signalée.Qt Jambi: Accès au contenu de QNetworkReply
Des idées très appréciées. Code:.
public class Test extends QObject {
private QWebPage page;
public Test() {
page = new QWebPage();
QNetworkAccessManager nac = new QNetworkAccessManager();
nac.finished.connect(this, "requestFinished(QNetworkReply)");
page.setNetworkAccessManager(nac);
page.loadProgress.connect(this, "loadProgress(int)");
page.loadFinished.connect(this, "loadFinished()");
}
public void requestFinished(QNetworkReply reply) {
reply.reset();
reply.open(OpenModeFlag.ReadOnly);
reply.readyRead.connect(this, "ready()"); // never gets called
System.out.println("bytes: " + reply.url().toString()); // writes out asset uri no problem
System.out.println("bytes: " + reply.bytesToWrite()); // 0
System.out.println("At end: " + reply.atEnd()); // true
System.out.println("Error: " + reply.errorString()); // "Unknown error"
}
public void loadProgress(int progress) {
System.out.println("Loaded " + progress + "%");
}
public void loadFinished() {
System.out.println("Done");
}
public void ready() {
System.out.println("Ready");
}
public void open(String url) {
page.mainFrame().load(new QUrl(url));
}
public static void main(String[] args) {
QApplication.initialize(new String[] { });
Test t = new Test();
t.open("http://news.bbc.co.uk");
QApplication.exec();
}
}
Vous vous demandez simplement pourquoi avez-vous besoin de page Web quand vous pouvez faire la même chose avec seulement QNetworkAccessManager? – Anton
@Anton: J'utilise la page web pour 2 raisons: 1) il me donne tous les atouts requis par la page (css, js, images - y compris ceux en css) et 2) car j'ai besoin du rendu html. –
@Richard: Pourquoi pas QWebView? – Anton