QT Jambi: доступ к контенту QnetWorkReply
-
24-10-2019 - |
Вопрос
У меня проблемы с доступом к содержанию объектов QnetWorkReply. Контент кажется пустым или нулевым. Согласно документам (перевод с C ++ на Java), я думаю, что я правильно настроен, но безрезультатно. Кроме того, сообщается о «неизвестной ошибке».
Любые идеи очень ценится. Код:
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();
}
}
Решение
Я полагаю, что QWebPage
уже запросил все QNetworkReply
Объекты, как они вошли. Документы говорят
QnetWorkReply-это последовательный доступ QioDevice, что означает, что после считывания данных из объекта он больше не хранится устройством. Поэтому приложение несет ответственность за сохранение этих данных, если это необходимо.
Так что сброс его не сработает.
Обратите внимание, что если вы делаете сетевой запрос непосредственно через QNetworkAccessManager
Вы получаете QNetworkReply
с доступными данными. Вы получаете только один для фактического URL -адреса, тогда как QWebPage
Подходите к загрузке все остальное после этого IE Images, JS и т. Д.