QNetworkAccessManager 用 url 打开一个 json 数据

Posted

技术标签:

【中文标题】QNetworkAccessManager 用 url 打开一个 json 数据【英文标题】:QNetworkAccessManager open a json data with url 【发布时间】:2014-09-25 08:19:37 【问题描述】:

我会打开带有 c++ / qt 链接的 *.json 数据。当我在 Firefox 中打开此 url 时,它会返回一个下载此数据的问题。但是在我的代码dosnt工作的那一刻,每次都会出现网络错误。我会用我的程序读取这个 json 数据并将其放入 QTableView。我必须使用 QNetworkAccessManager 还是这是错误的方式?

    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    QObject::connect(manager, SIGNAL(finished(QNetworkReply*)),
            this, SLOT(serviceRequestFinished(QNetworkReply*)));
    manager->get(QNetworkRequest(QUrl("http://google.de")));

    
void Tester::serviceRequestFinished(QNetworkReply* reply)

    // At the end of that slot, we won't need it anymore
    reply->deleteLater();

    if(reply->error() == QNetworkReply::NoError) 
        QByteArray data = reply->readAll();
        QString Sdata = data;
        qDebug(data);
        qDebug("no Error");


     else 
         cout<<"Error at Reply"<<endl;
         QByteArray data = reply->readAll();
         qDebug(data);
    

【问题讨论】:

错误信息是什么?尝试使用 errorString() 方法调用来获取它 它转到 else ,所以它写:“Error at Reply” 没有这个 gDebug,它说什么都没有......这就是问题 我的意思是,如果发生错误,您应该通过从 QNetworkReply 实例调用 QNetworkReply::errorString() 来打印出错误消息。然后在此处粘贴错误消息文本。 "找不到主机 google.de" 尝试使用http://www。谷歌。 de 而不是 google.de 【参考方案1】:

尝试使用带有 www 前缀的 url:

manager->get(QNetworkRequest(QUrl("http://www.google.de")));

【讨论】:

谢谢,但我的原始网址来自 ais ,没有 www 我不能发布它,因为其中包含我的帐户名,但这是链接:data.aishub.net/ws.php?username=exampleName&format=1&output=json&compress=0&latmin=50&latmax=58&lonmin= 5&lonmax=10 这是我使用 URL 时的错误:协议“”未知 @Erdbeerchen,这也是你的问题吗? ***.com/q/25989358/2266412

以上是关于QNetworkAccessManager 用 url 打开一个 json 数据的主要内容,如果未能解决你的问题,请参考以下文章

错误:没有用于调用“QNetworkAccessManager::QNetworkAccessManager(Networking* const)”的匹配函数

QNetworkAccessManager 问题

使用 QNetworkAccessManager 请求

如何恢复 QNetworkAccessManager

QNetworkAccessManager - 如何发送 MultiPart “PATCH” 请求

QNetworkAccessManager 不发出完成信号