質問

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に対しては1つしかありませんが QWebPage アプローチの後、その後すべてをダウンロードします。つまり、JSなど。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top